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
This commit is contained in:
Daniel Stenberg 2008-10-13 22:21:01 +00:00
parent 6c2167b65f
commit b7722e7037
1 changed files with 14 additions and 11 deletions

View File

@ -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; i<size-1; i++) {
if(data[i] == '\n') { /* LF */
if(!newl) {
fprintf(config->trace_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;
}