]> granicus.if.org Git - curl/commitdiff
http: fix a memory leakage in checkrtspprefix().
authorPatrick Monnerat <patrick@monnerat.net>
Sat, 2 Sep 2017 11:40:19 +0000 (12:40 +0100)
committerPatrick Monnerat <patrick@monnerat.net>
Sat, 2 Sep 2017 11:40:19 +0000 (12:40 +0100)
lib/http.c

index 3e331327834d50cbacf872771e8e7c5457f24b3d..cf50a7cacec33a5bb74d2d98d64dffb2e968901f 100644 (file)
@@ -2809,6 +2809,7 @@ static bool
 checkrtspprefix(struct Curl_easy *data,
                 const char *s)
 {
+  bool result = FALSE;
 
 #ifdef CURL_DOES_CONVERSIONS
   /* convert from the network encoding using a scratch area */
@@ -2819,16 +2820,17 @@ checkrtspprefix(struct Curl_easy *data,
   }
   if(CURLE_OK != Curl_convert_from_network(data, scratch, strlen(s)+1)) {
     /* Curl_convert_from_network calls failf if unsuccessful */
-    free(scratch);
-    return FALSE; /* can't return CURLE_foobar so return FALSE */
+    result = FALSE; /* can't return CURLE_foobar so return FALSE */
   }
-  s = scratch;
+  else
+    result = checkprefix("RTSP/", scratch)? TRUE: FALSE;
+  free(scratch);
 #else
   (void)data; /* unused */
+  result = checkprefix("RTSP/", s)? TRUE: FALSE;
 #endif /* CURL_DOES_CONVERSIONS */
-  if(checkprefix("RTSP/", s))
-    return TRUE;
-  return FALSE;
+
+  return result;
 }
 #endif /* CURL_DISABLE_RTSP */