From e88b71aee4ad51f0a7a8af21d467211cac0d8aa6 Mon Sep 17 00:00:00 2001 From: Jonas Holmberg Date: Thu, 19 Sep 2013 15:44:26 +0200 Subject: [PATCH] client: Do not read beyond end of path string 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 | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gst/rtsp-server/rtsp-client.c b/gst/rtsp-server/rtsp-client.c index b7f430c..1d192a7 100644 --- a/gst/rtsp-server/rtsp-client.c +++ b/gst/rtsp-server/rtsp-client.c @@ -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); -- 2.7.4