diff options
author | Radoslav Georgiev <rgeorgiev583@gmail.com> | 2020-05-26 19:42:07 +0300 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-06-02 00:14:08 +0200 |
commit | abfd154efd5de2cc3c73ff50b9a489651fb2a5b6 (patch) | |
tree | 4325c93e9f9770ecf48da82d4a3d755c0c2d2363 /docs/examples/http2-download.c | |
parent | 066b30323182193bd034cf86af03d3713c2004ec (diff) | |
download | curl-abfd154efd5de2cc3c73ff50b9a489651fb2a5b6.tar.gz |
examples/http2-down/upload: add error checks
If `index.html` does not exist in the directory from which the example
is invoked, the fopen(upload, "rb") invocation in `setup` would fail,
returning NULL. This value is subsequently passed as the FILE* argument
of the `fread` invocation in the `read_callback` function, which is the
actual cause of the crash (apparently `fread` assumes that argument to
be non-null).
In addition, mitigate some possible crashes of similar origin.
Closes #5463
Diffstat (limited to 'docs/examples/http2-download.c')
-rw-r--r-- | docs/examples/http2-download.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/docs/examples/http2-download.c b/docs/examples/http2-download.c index 333b7df2c..a86d60219 100644 --- a/docs/examples/http2-download.c +++ b/docs/examples/http2-download.c @@ -26,6 +26,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <errno.h> /* somewhat unix-specific */ #include <sys/time.h> @@ -33,6 +34,7 @@ /* curl stuff */ #include <curl/curl.h> +#include <curl/mprintf.h> #ifndef CURLPIPE_MULTIPLEX /* This little trick will just make sure that we don't enable pipelining for @@ -146,9 +148,14 @@ static void setup(struct transfer *t, int num) hnd = t->easy = curl_easy_init(); - snprintf(filename, 128, "dl-%d", num); + curl_msnprintf(filename, 128, "dl-%d", num); t->out = fopen(filename, "wb"); + if(!t->out) { + fprintf(stderr, "error: could not open file %s for writing: %s\n", + filename, strerror(errno)); + exit(1); + } /* write to this file */ curl_easy_setopt(hnd, CURLOPT_WRITEDATA, t->out); |