mirror of
https://github.com/curl/curl.git
synced 2025-02-05 14:30:10 +08:00
library: Fix memory leaks found during static analysis
Closes https://github.com/curl/curl/pull/913
This commit is contained in:
parent
bcc8f485e5
commit
bf430ecdef
@ -227,15 +227,19 @@ static CURLcode file_connect(struct connectdata *conn, bool *done)
|
|||||||
for(i=0; i < real_path_len; ++i)
|
for(i=0; i < real_path_len; ++i)
|
||||||
if(actual_path[i] == '/')
|
if(actual_path[i] == '/')
|
||||||
actual_path[i] = '\\';
|
actual_path[i] = '\\';
|
||||||
else if(!actual_path[i]) /* binary zero */
|
else if(!actual_path[i]) { /* binary zero */
|
||||||
|
Curl_safefree(real_path);
|
||||||
return CURLE_URL_MALFORMAT;
|
return CURLE_URL_MALFORMAT;
|
||||||
|
}
|
||||||
|
|
||||||
fd = open_readonly(actual_path, O_RDONLY|O_BINARY);
|
fd = open_readonly(actual_path, O_RDONLY|O_BINARY);
|
||||||
file->path = actual_path;
|
file->path = actual_path;
|
||||||
#else
|
#else
|
||||||
if(memchr(real_path, 0, real_path_len))
|
if(memchr(real_path, 0, real_path_len)) {
|
||||||
/* binary zeroes indicate foul play */
|
/* binary zeroes indicate foul play */
|
||||||
|
Curl_safefree(real_path);
|
||||||
return CURLE_URL_MALFORMAT;
|
return CURLE_URL_MALFORMAT;
|
||||||
|
}
|
||||||
|
|
||||||
fd = open_readonly(real_path, O_RDONLY);
|
fd = open_readonly(real_path, O_RDONLY);
|
||||||
file->path = real_path;
|
file->path = real_path;
|
||||||
|
@ -299,11 +299,16 @@ CURLMcode Curl_pipeline_set_server_blacklist(char **servers,
|
|||||||
char *server_name;
|
char *server_name;
|
||||||
|
|
||||||
server_name = strdup(*servers);
|
server_name = strdup(*servers);
|
||||||
if(!server_name)
|
if(!server_name) {
|
||||||
|
Curl_llist_destroy(new_list, NULL);
|
||||||
return CURLM_OUT_OF_MEMORY;
|
return CURLM_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
if(!Curl_llist_insert_next(new_list, new_list->tail, server_name))
|
if(!Curl_llist_insert_next(new_list, new_list->tail, server_name)) {
|
||||||
|
Curl_llist_destroy(new_list, NULL);
|
||||||
|
Curl_safefree(server_name);
|
||||||
return CURLM_OUT_OF_MEMORY;
|
return CURLM_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
servers++;
|
servers++;
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include "curl_sspi.h"
|
#include "curl_sspi.h"
|
||||||
#include "curl_multibyte.h"
|
#include "curl_multibyte.h"
|
||||||
#include "warnless.h"
|
#include "warnless.h"
|
||||||
|
#include "strdup.h"
|
||||||
/* The last 3 #include files should be in this order */
|
/* The last 3 #include files should be in this order */
|
||||||
#include "curl_printf.h"
|
#include "curl_printf.h"
|
||||||
#include "curl_memory.h"
|
#include "curl_memory.h"
|
||||||
@ -96,10 +97,9 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
|
|||||||
|
|
||||||
/* prepare service name */
|
/* prepare service name */
|
||||||
if(strchr(service, '/')) {
|
if(strchr(service, '/')) {
|
||||||
service_name = malloc(strlen(service));
|
service_name = strdup(service);
|
||||||
if(!service_name)
|
if(!service_name)
|
||||||
return CURLE_OUT_OF_MEMORY;
|
return CURLE_OUT_OF_MEMORY;
|
||||||
memcpy(service_name, service, strlen(service));
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
service_name = malloc(strlen(service) + strlen(conn->proxy.name) + 2);
|
service_name = malloc(strlen(service) + strlen(conn->proxy.name) + 2);
|
||||||
|
Loading…
Reference in New Issue
Block a user