diff options
Diffstat (limited to 'debuginfod')
| -rw-r--r-- | debuginfod/ChangeLog | 5 | ||||
| -rw-r--r-- | debuginfod/debuginfod-client.c | 22 |
2 files changed, 19 insertions, 8 deletions
diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog index d6bbfac8..2bbd5db5 100644 --- a/debuginfod/ChangeLog +++ b/debuginfod/ChangeLog @@ -1,5 +1,10 @@ 2020-06-16 Mark Wielaard <mark@klomp.org> + * debuginfod-client.c (debuginfod_query_server): Check malloc. + Move curl_multi_init call before handle_data malloc call. + +2020-06-16 Mark Wielaard <mark@klomp.org> + * debuginfod-client.c (debuginfod_query_server): Replace sizeof build_id_bytes check with strlen build_id check. diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c index 7b53cb31..c2aa4e10 100644 --- a/debuginfod/debuginfod-client.c +++ b/debuginfod/debuginfod-client.c @@ -665,10 +665,24 @@ debuginfod_query_server (debuginfod_client *c, && (i == 0 || server_urls[i - 1] == url_delim_char)) num_urls++; + CURLM *curlm = curl_multi_init(); + if (curlm == NULL) + { + rc = -ENETUNREACH; + goto out0; + } + /* Tracks which handle should write to fd. Set to the first handle that is ready to write the target file to the cache. */ CURL *target_handle = NULL; struct handle_data *data = malloc(sizeof(struct handle_data) * num_urls); + if (data == NULL) + { + rc = -ENOMEM; + goto out0; + } + + /* thereafter, goto out1 on error. */ /* Initalize handle_data with default values. */ for (int i = 0; i < num_urls; i++) @@ -677,14 +691,6 @@ debuginfod_query_server (debuginfod_client *c, data[i].fd = -1; } - CURLM *curlm = curl_multi_init(); - if (curlm == NULL) - { - rc = -ENETUNREACH; - goto out0; - } - /* thereafter, goto out1 on error. */ - char *strtok_saveptr; char *server_url = strtok_r(server_urls, url_delim, &strtok_saveptr); |
