client: Do not read beyond end of path string
authorJonas Holmberg <jonashg@axis.com>
Thu, 19 Sep 2013 13:44:26 +0000 (15:44 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Thu, 19 Sep 2013 13:44:26 +0000 (15:44 +0200)
If the setup was done without a control url, make sure we don't try to read the
non-existing control string and crash.

gst/rtsp-server/rtsp-client.c

index b7f430c..1d192a7 100644 (file)
@@ -1425,6 +1425,9 @@ handle_setup_request (GstRTSPClient * client, GstRTSPContext * ctx)
   if (media == NULL)
     goto media_not_found;
 
+  if (path[matched] == '\0')
+    goto control_not_found;
+
   /* path is what matched. We can modify the parsed uri in place */
   path[matched] = '\0';
   /* control is remainder */
@@ -1551,6 +1554,13 @@ media_not_found:
     send_generic_response (client, GST_RTSP_STS_NOT_FOUND, ctx);
     return FALSE;
   }
+control_not_found:
+  {
+    GST_ERROR ("client %p: no control in path '%s'", client, path);
+    send_generic_response (client, GST_RTSP_STS_NOT_FOUND, ctx);
+    g_object_unref (media);
+    return FALSE;
+  }
 stream_not_found:
   {
     GST_ERROR ("client %p: stream '%s' not found", client, control);