diff options
author | Yang Tse <yangsita@gmail.com> | 2007-04-07 04:51:35 +0000 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2007-04-07 04:51:35 +0000 |
commit | d9e89e170f0b00de8f4b36bd20a5b5ad4110366c (patch) | |
tree | a8bb7183a3104aaf5993454659f8b0e972868b6f /lib | |
parent | 47594be5c0d28a77f1cecf3cb7badc975f9a9297 (diff) |
fix out of memory handling issue
Diffstat (limited to 'lib')
-rw-r--r-- | lib/cookie.c | 11 | ||||
-rw-r--r-- | lib/ssluse.c | 11 |
2 files changed, 18 insertions, 4 deletions
diff --git a/lib/cookie.c b/lib/cookie.c index e64bc49e9..d25eb69c3 100644 --- a/lib/cookie.c +++ b/lib/cookie.c @@ -1005,13 +1005,18 @@ struct curl_slist *Curl_cookie_list(struct SessionHandle *data) /* fill the list with _all_ the cookies we know */ line = get_netscape_format(c); if (line == NULL) { - /* get_netscape_format returns null only if we run out of memory */ - - curl_slist_free_all(beg); /* free some memory */ + curl_slist_free_all(beg); return NULL; } list = curl_slist_append(list, line); free(line); + if (list == NULL) { + curl_slist_free_all(beg); + return NULL; + } + else if (beg == NULL) { + beg = list; + } c = c->next; } diff --git a/lib/ssluse.c b/lib/ssluse.c index d96ee13bf..5c2999dfa 100644 --- a/lib/ssluse.c +++ b/lib/ssluse.c @@ -678,10 +678,19 @@ struct curl_slist *Curl_ossl_engines_list(struct SessionHandle *data) { struct curl_slist *list = NULL; #if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H) + struct curl_slist *beg = NULL; ENGINE *e; - for (e = ENGINE_get_first(); e; e = ENGINE_get_next(e)) + for (e = ENGINE_get_first(); e; e = ENGINE_get_next(e)) { list = curl_slist_append(list, ENGINE_get_id(e)); + if (list == NULL) { + curl_slist_free_all(beg); + return NULL; + } + else if (beg == NULL) { + beg = list; + } + } #endif (void) data; return (list); |