From 412b957a2a0a70f80f713caca6c94377fe8399b2 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 13 Apr 2020 23:46:18 +0200 Subject: tool: do not declare functions with Curl_ prefix To avoid collision risks with private libcurl symbols when linked with static versions (or just versions not hiding internal symbols). Reported-by: hydra3333 on github Fixes #5219 --- src/tool_doswin.c | 10 +++++----- src/tool_metalink.c | 38 +++++++++++++++++++------------------- src/tool_metalink.h | 28 +++++++++++----------------- src/tool_util.c | 12 ++++++------ 4 files changed, 41 insertions(+), 47 deletions(-) diff --git a/src/tool_doswin.c b/src/tool_doswin.c index 221e3864b..b7df3e615 100644 --- a/src/tool_doswin.c +++ b/src/tool_doswin.c @@ -697,8 +697,8 @@ cleanup: return slist; } -LARGE_INTEGER Curl_freq; -bool Curl_isVistaOrGreater; +LARGE_INTEGER tool_freq; +bool tool_isVistaOrGreater; CURLcode win32_init(void) { @@ -713,13 +713,13 @@ CURLcode win32_init(void) VER_SET_CONDITION(mask, VER_MINORVERSION, op); if(VerifyVersionInfoA(&osvi, (VER_MAJORVERSION | VER_MINORVERSION), mask)) - Curl_isVistaOrGreater = true; + tool_isVistaOrGreater = true; else if(GetLastError() == ERROR_OLD_WIN_VERSION) - Curl_isVistaOrGreater = false; + tool_isVistaOrGreater = false; else return CURLE_FAILED_INIT; - QueryPerformanceFrequency(&Curl_freq); + QueryPerformanceFrequency(&tool_freq); return CURLE_OK; } diff --git a/src/tool_metalink.c b/src/tool_metalink.c index e8629353f..fce18d5a4 100644 --- a/src/tool_metalink.c +++ b/src/tool_metalink.c @@ -401,9 +401,9 @@ static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx) const digest_params MD5_DIGEST_PARAMS[] = { { - CURLX_FUNCTION_CAST(Curl_digest_init_func, MD5_Init), - CURLX_FUNCTION_CAST(Curl_digest_update_func, MD5_Update), - CURLX_FUNCTION_CAST(Curl_digest_final_func, MD5_Final), + CURLX_FUNCTION_CAST(digest_init_func, MD5_Init), + CURLX_FUNCTION_CAST(digest_update_func, MD5_Update), + CURLX_FUNCTION_CAST(digest_final_func, MD5_Final), sizeof(MD5_CTX), 16 } @@ -411,9 +411,9 @@ const digest_params MD5_DIGEST_PARAMS[] = { const digest_params SHA1_DIGEST_PARAMS[] = { { - CURLX_FUNCTION_CAST(Curl_digest_init_func, SHA1_Init), - CURLX_FUNCTION_CAST(Curl_digest_update_func, SHA1_Update), - CURLX_FUNCTION_CAST(Curl_digest_final_func, SHA1_Final), + CURLX_FUNCTION_CAST(digest_init_func, SHA1_Init), + CURLX_FUNCTION_CAST(digest_update_func, SHA1_Update), + CURLX_FUNCTION_CAST(digest_final_func, SHA1_Final), sizeof(SHA_CTX), 20 } @@ -421,9 +421,9 @@ const digest_params SHA1_DIGEST_PARAMS[] = { const digest_params SHA256_DIGEST_PARAMS[] = { { - CURLX_FUNCTION_CAST(Curl_digest_init_func, SHA256_Init), - CURLX_FUNCTION_CAST(Curl_digest_update_func, SHA256_Update), - CURLX_FUNCTION_CAST(Curl_digest_final_func, SHA256_Final), + CURLX_FUNCTION_CAST(digest_init_func, SHA256_Init), + CURLX_FUNCTION_CAST(digest_update_func, SHA256_Update), + CURLX_FUNCTION_CAST(digest_final_func, SHA256_Final), sizeof(SHA256_CTX), 32 } @@ -457,7 +457,7 @@ static const metalink_digest_alias digest_aliases[] = { {NULL, NULL} }; -digest_context *Curl_digest_init(const digest_params *dparams) +static digest_context *digest_init(const digest_params *dparams) { digest_context *ctxt; @@ -485,16 +485,16 @@ digest_context *Curl_digest_init(const digest_params *dparams) return ctxt; } -int Curl_digest_update(digest_context *context, - const unsigned char *data, - unsigned int len) +static int digest_update(digest_context *context, + const unsigned char *data, + unsigned int len) { (*context->digest_hash->digest_update)(context->digest_hashctx, data, len); return 0; } -int Curl_digest_final(digest_context *context, unsigned char *result) +static int digest_final(digest_context *context, unsigned char *result) { if(result) (*context->digest_hash->digest_final)(result, context->digest_hashctx); @@ -551,7 +551,7 @@ static int check_hash(const char *filename, return -1; } - dctx = Curl_digest_init(digest_def->dparams); + dctx = digest_init(digest_def->dparams); if(!dctx) { fprintf(error, "Metalink: validating (%s) [%s] FAILED (%s)\n", filename, digest_def->hash_name, "failed to initialize hash algorithm"); @@ -562,7 +562,7 @@ static int check_hash(const char *filename, result = malloc(digest_def->dparams->digest_resultlen); if(!result) { close(fd); - Curl_digest_final(dctx, NULL); + digest_final(dctx, NULL); return -1; } while(1) { @@ -574,13 +574,13 @@ static int check_hash(const char *filename, else if(len == -1) { fprintf(error, "Metalink: validating (%s) [%s] FAILED (%s)\n", filename, digest_def->hash_name, strerror(errno)); - Curl_digest_final(dctx, result); + digest_final(dctx, result); close(fd); return -1; } - Curl_digest_update(dctx, buf, (unsigned int)len); + digest_update(dctx, buf, (unsigned int)len); } - Curl_digest_final(dctx, result); + digest_final(dctx, result); check_ok = memcmp(result, digest, digest_def->dparams->digest_resultlen) == 0; /* sha*sum style verdict output */ diff --git a/src/tool_metalink.h b/src/tool_metalink.h index f5ec306f7..db2f702e5 100644 --- a/src/tool_metalink.h +++ b/src/tool_metalink.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2014, 2019, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2020, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -28,19 +28,19 @@ struct GlobalConfig; struct OperationConfig; /* returns 1 for success, 0 otherwise (we use OpenSSL *_Init fncs directly) */ -typedef int (* Curl_digest_init_func)(void *context); +typedef int (*digest_init_func)(void *context); -typedef void (* Curl_digest_update_func)(void *context, - const unsigned char *data, - unsigned int len); -typedef void (* Curl_digest_final_func)(unsigned char *result, void *context); +typedef void (*digest_update_func)(void *context, + const unsigned char *data, + unsigned int len); +typedef void (*digest_final_func)(unsigned char *result, void *context); typedef struct { - Curl_digest_init_func digest_init; /* Initialize context procedure */ - Curl_digest_update_func digest_update; /* Update context with data */ - Curl_digest_final_func digest_final; /* Get final result procedure */ - unsigned int digest_ctxtsize; /* Context structure size */ - unsigned int digest_resultlen; /* Result length (bytes) */ + digest_init_func digest_init; /* Initialize context procedure */ + digest_update_func digest_update; /* Update context with data */ + digest_final_func digest_final; /* Get final result procedure */ + unsigned int digest_ctxtsize; /* Context structure size */ + unsigned int digest_resultlen; /* Result length (bytes) */ } digest_params; typedef struct { @@ -48,12 +48,6 @@ typedef struct { void *digest_hashctx; /* Hash function context */ } digest_context; -digest_context * Curl_digest_init(const digest_params *dparams); -int Curl_digest_update(digest_context *context, - const unsigned char *data, - unsigned int len); -int Curl_digest_final(digest_context *context, unsigned char *result); - typedef struct { const char *hash_name; const digest_params *dparams; diff --git a/src/tool_util.c b/src/tool_util.c index 8bbfae03e..3ca13e7cb 100644 --- a/src/tool_util.c +++ b/src/tool_util.c @@ -28,19 +28,19 @@ #if defined(WIN32) && !defined(MSDOS) /* set in win32_init() */ -extern LARGE_INTEGER Curl_freq; -extern bool Curl_isVistaOrGreater; +extern LARGE_INTEGER tool_freq; +extern bool tool_isVistaOrGreater; /* In case of bug fix this function has a counterpart in timeval.c */ struct timeval tvnow(void) { struct timeval now; - if(Curl_isVistaOrGreater) { /* QPC timer might have issues pre-Vista */ + if(tool_isVistaOrGreater) { /* QPC timer might have issues pre-Vista */ LARGE_INTEGER count; QueryPerformanceCounter(&count); - now.tv_sec = (long)(count.QuadPart / Curl_freq.QuadPart); - now.tv_usec = (long)((count.QuadPart % Curl_freq.QuadPart) * 1000000 / - Curl_freq.QuadPart); + now.tv_sec = (long)(count.QuadPart / tool_freq.QuadPart); + now.tv_usec = (long)((count.QuadPart % tool_freq.QuadPart) * 1000000 / + tool_freq.QuadPart); } else { /* Disable /analyze warning that GetTickCount64 is preferred */ -- cgit v1.2.1