diff options
Diffstat (limited to 'lib/file.c')
| -rw-r--r-- | lib/file.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/lib/file.c b/lib/file.c index be7660cfb..b534ec18d 100644 --- a/lib/file.c +++ b/lib/file.c @@ -227,15 +227,19 @@ static CURLcode file_connect(struct connectdata *conn, bool *done)    for(i=0; i < real_path_len; ++i)      if(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; +    }    fd = open_readonly(actual_path, O_RDONLY|O_BINARY);    file->path = actual_path;  #else -  if(memchr(real_path, 0, real_path_len)) +  if(memchr(real_path, 0, real_path_len)) {      /* binary zeroes indicate foul play */ +    Curl_safefree(real_path);      return CURLE_URL_MALFORMAT; +  }    fd = open_readonly(real_path, O_RDONLY);    file->path = real_path; | 
