From b7722e7037d87e4afeded8a7317db25875002bc0 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 13 Oct 2008 22:21:01 +0000 Subject: Prevent the accidental passing along NULL for the cases where the --trace options don't succeed in opening the target file etc. Detected by coverity.com --- src/main.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index 7d397362c..b547eb5f1 100644 --- a/src/main.c +++ b/src/main.c @@ -3506,6 +3506,11 @@ int my_trace(CURL *handle, curl_infotype type, if(config->trace_stream) output = config->trace_stream; + if(!output) { + warnf(config, "Failed to create/open output"); + return 0; + } + if(config->tracetype == TRACE_PLAIN) { /* * This is the trace look that is similar to what libcurl makes on its @@ -3524,25 +3529,24 @@ int my_trace(CURL *handle, curl_infotype type, for(i=0; itrace_stream, "%s%s ", - timebuf, s_infotype[type]); + fprintf(output, "%s%s ", timebuf, s_infotype[type]); } - fwrite(data+st, i-st+1, 1, config->trace_stream); + fwrite(data+st, i-st+1, 1, output); st = i+1; newl = FALSE; } } if(!newl) - fprintf(config->trace_stream, "%s%s ", timebuf, s_infotype[type]); - fwrite(data+st, i-st+1, 1, config->trace_stream); + fprintf(output, "%s%s ", timebuf, s_infotype[type]); + fwrite(data+st, i-st+1, 1, output); newl = (bool)(size && (data[size-1] != '\n')); traced_data = FALSE; break; case CURLINFO_TEXT: case CURLINFO_HEADER_IN: if(!newl) - fprintf(config->trace_stream, "%s%s ", timebuf, s_infotype[type]); - fwrite(data, size, 1, config->trace_stream); + fprintf(output, "%s%s ", timebuf, s_infotype[type]); + fwrite(data, size, 1, output); newl = (bool)(size && (data[size-1] != '\n')); traced_data = FALSE; break; @@ -3556,11 +3560,10 @@ int my_trace(CURL *handle, curl_infotype type, being shown as the data _is_ shown then just not via this function */ if(!config->isatty || - ((config->trace_stream != stderr) && - (config->trace_stream != stdout))) { + ((output != stderr) && (output != stdout))) { if(!newl) - fprintf(config->trace_stream, "%s%s ", timebuf, s_infotype[type]); - fprintf(config->trace_stream, "[data not shown]\n"); + fprintf(output, "%s%s ", timebuf, s_infotype[type]); + fprintf(output, "[data not shown]\n"); newl = FALSE; traced_data = TRUE; } -- cgit v1.2.3