Commit d9e89e17 authored by Yang Tse's avatar Yang Tse
Browse files

fix out of memory handling issue

parent 47594be5
Loading
Loading
Loading
Loading
+8 −3
Original line number Original line Diff line number Diff line
@@ -1005,13 +1005,18 @@ struct curl_slist *Curl_cookie_list(struct SessionHandle *data)
    /* fill the list with _all_ the cookies we know */
    /* fill the list with _all_ the cookies we know */
    line = get_netscape_format(c);
    line = get_netscape_format(c);
    if (line == NULL) {
    if (line == NULL) {
      /* get_netscape_format returns null only if we run out of memory */
      curl_slist_free_all(beg);

      curl_slist_free_all(beg); /* free some memory */
      return NULL;
      return NULL;
    }
    }
    list = curl_slist_append(list, line);
    list = curl_slist_append(list, line);
    free(line);
    free(line);
    if (list == NULL) {
      curl_slist_free_all(beg);
      return NULL;
    }
    else if (beg == NULL) {
      beg = list;
    }
    c = c->next;
    c = c->next;
  }
  }


+10 −1
Original line number Original line Diff line number Diff line
@@ -678,10 +678,19 @@ struct curl_slist *Curl_ossl_engines_list(struct SessionHandle *data)
{
{
  struct curl_slist *list = NULL;
  struct curl_slist *list = NULL;
#if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H)
#if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H)
  struct curl_slist *beg = NULL;
  ENGINE *e;
  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));
    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
#endif
  (void) data;
  (void) data;
  return (list);
  return (list);