summaryrefslogtreecommitdiff
path: root/curl/curl/tool_main.c
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2023-10-12 20:29:02 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2023-10-15 22:56:16 +0300
commit11d9c9173f89991b0b773a7de8f0475de68b6fef (patch)
tree7a7245ace85e70b15cb3c228671442970598901e /curl/curl/tool_main.c
parentd412f78cbd95cf9bd4b148b0000a245d30cf171f (diff)
Upgrade to 8.4.0
That in particular fixes CVE-2023-38545 CVE-2023-38546.
Diffstat (limited to 'curl/curl/tool_main.c')
-rw-r--r--curl/curl/tool_main.c39
1 files changed, 14 insertions, 25 deletions
diff --git a/curl/curl/tool_main.c b/curl/curl/tool_main.c
index 0eb4e6d..494ec02 100644
--- a/curl/curl/tool_main.c
+++ b/curl/curl/tool_main.c
@@ -29,19 +29,12 @@
#include <tchar.h>
#endif
-#ifdef HAVE_SIGNAL_H
#include <signal.h>
-#endif
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
-#ifdef USE_NSS
-#include <nspr.h>
-#include <plarenas.h>
-#endif
-
#include <stdlib.h> /* setenv(), _putenv() */
#include <libca-certificates-curl/path.h>
@@ -57,6 +50,7 @@
#include "tool_vms.h"
#include "tool_main.h"
#include "tool_libinfo.h"
+#include "tool_stderr.h"
/*
* This is low-level hard-hacking memory leak tracking and similar. Using
@@ -81,6 +75,7 @@ int vms_show = 0;
* when command-line argument globbing is enabled under the MSYS shell, so turn
* it off.
*/
+extern int _CRT_glob;
int _CRT_glob = 0;
#endif /* __MINGW32__ */
@@ -195,7 +190,6 @@ static CURLcode main_init(struct GlobalConfig *config)
/* Initialise the global config */
config->showerror = FALSE; /* show errors when silent */
- config->errors = stderr; /* Default errors to stderr */
config->styled_output = TRUE; /* enable detection */
config->parallel_max = PARALLEL_DEFAULT;
@@ -214,17 +208,17 @@ static CURLcode main_init(struct GlobalConfig *config)
config->first->global = config;
}
else {
- errorf(config, "error retrieving curl library information\n");
+ errorf(config, "error retrieving curl library information");
free(config->first);
}
}
else {
- errorf(config, "error initializing curl library\n");
+ errorf(config, "error initializing curl library");
free(config->first);
}
}
else {
- errorf(config, "error initializing curl\n");
+ errorf(config, "error initializing curl");
result = CURLE_FAILED_INIT;
}
@@ -235,10 +229,6 @@ static void free_globalconfig(struct GlobalConfig *config)
{
Curl_safefree(config->trace_dump);
- if(config->errors_fopened && config->errors)
- fclose(config->errors);
- config->errors = NULL;
-
if(config->trace_fopened && config->trace_stream)
fclose(config->trace_stream);
config->trace_stream = NULL;
@@ -255,14 +245,6 @@ static void main_free(struct GlobalConfig *config)
/* Cleanup the easy handle */
/* Main cleanup */
curl_global_cleanup();
-#ifdef USE_NSS
- if(PR_Initialized()) {
- /* prevent valgrind from reporting still reachable mem from NSPR arenas */
- PL_ArenaFinish();
- /* prevent valgrind from reporting possibly lost memory (fd cache, ...) */
- PR_Cleanup();
- }
-#endif
free_globalconfig(config);
/* Free the config structures */
@@ -275,6 +257,11 @@ static void main_free(struct GlobalConfig *config)
** curl tool main function.
*/
#ifdef _UNICODE
+#if defined(__GNUC__)
+/* GCC doesn't know about wmain() */
+#pragma GCC diagnostic ignored "-Wmissing-prototypes"
+#pragma GCC diagnostic ignored "-Wmissing-declarations"
+#endif
int wmain(int argc, wchar_t *argv[])
#else
int main(int argc, char *argv[])
@@ -284,6 +271,8 @@ int main(int argc, char *argv[])
struct GlobalConfig global;
memset(&global, 0, sizeof(global));
+ tool_init_stderr();
+
#ifdef WIN32
/* Undocumented diagnostic option to list the full paths of all loaded
modules. This is purposely pre-init. */
@@ -297,13 +286,13 @@ int main(int argc, char *argv[])
/* win32_init must be called before other init routines. */
result = win32_init();
if(result) {
- fprintf(stderr, "curl: (%d) Windows-specific init failed.\n", result);
+ errorf(&global, "(%d) Windows-specific init failed", result);
return result;
}
#endif
if(main_checkfds()) {
- fprintf(stderr, "curl: out of file descriptors\n");
+ errorf(&global, "out of file descriptors");
return CURLE_FAILED_INIT;
}