Commit 6fa6567b authored by Yang Tse's avatar Yang Tse
Browse files

url.c and file.c: fix OOM triggered segfault

parent 93e57d06
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -184,7 +184,7 @@ static CURLcode file_range(struct connectdata *conn)
static CURLcode file_connect(struct connectdata *conn, bool *done)
{
  struct SessionHandle *data = conn->data;
  char *real_path = curl_easy_unescape(data, data->state.path, 0, NULL);
  char *real_path;
  struct FILEPROTO *file;
  int fd;
#ifdef DOS_FILESYSTEM
@@ -192,13 +192,14 @@ static CURLcode file_connect(struct connectdata *conn, bool *done)
  char *actual_path;
#endif

  if(!real_path)
    return CURLE_OUT_OF_MEMORY;

  /* If there already is a protocol-specific struct allocated for this
     sessionhandle, deal with it */
  Curl_reset_reqproto(conn);

  real_path = curl_easy_unescape(data, data->state.path, 0, NULL);
  if(!real_path)
    return CURLE_OUT_OF_MEMORY;

  if(!data->state.proto.file) {
    file = calloc(1, sizeof(struct FILEPROTO));
    if(!file) {
+1 −1
Original line number Diff line number Diff line
@@ -2606,7 +2606,7 @@ CURLcode Curl_disconnect(struct connectdata *conn, bool dead_connection)
  data = conn->data;

  if(!data) {
    DEBUGF(infof(data, "DISCONNECT without easy handle, ignoring\n"));
    DEBUGF(fprintf(stderr, "DISCONNECT without easy handle, ignoring\n"));
    return CURLE_OK;
  }