coverity/155506: fixing "dereference null after check" (#6862)

rbuffer_read_ptr may return a null

if ptr == null && cnt == 0 && !out_data_decide_throttle(cnt)
    then we would have called out_data_append_to_screen(ptr, cnt, eof)
    which dereferences the null pointer.
This commit is contained in:
Chris Hall 2017-06-19 10:01:29 +10:00 committed by Justin M. Keyes
parent 26235bc050
commit 76ea97c809

View File

@ -496,8 +496,12 @@ static void out_data_cb(Stream *stream, RBuffer *buf, size_t count, void *data,
size_t cnt; size_t cnt;
char *ptr = rbuffer_read_ptr(buf, &cnt); char *ptr = rbuffer_read_ptr(buf, &cnt);
if (ptr != NULL && cnt > 0 if (ptr == NULL || cnt == 0) {
&& out_data_decide_throttle(cnt)) { // Skip output above a threshold. // Nothing to read;
return;
}
if (out_data_decide_throttle(cnt)) { // Skip output above a threshold.
// Save the skipped output. If it is the final chunk, we display it later. // Save the skipped output. If it is the final chunk, we display it later.
out_data_ring(ptr, cnt); out_data_ring(ptr, cnt);
} else { } else {