From 8d0b8f242a683c0f36e61e557446adb29faa05fe Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Thu, 13 Oct 2005 16:26:12 +0000 Subject: [PATCH] libs/gst/dataprotocol/dataprotocol.c (gst_dp_packet_from_caps): Fix Timmeke Waymans bug. Original commit message from CVS: 2005-10-13 Andy Wingo * libs/gst/dataprotocol/dataprotocol.c (gst_dp_packet_from_caps): Fix Timmeke Waymans bug. (gst_dp_caps_from_packet): Make sure we pass a NUL-terminated string of the proper length to gst_caps_from_string. There's a potential for, before this fix, that this could cause someone connecting over the network to cause a segfault if the payload is not NUL-terminated. --- ChangeLog | 14 ++++++++++++-- libs/gst/dataprotocol/dataprotocol.c | 7 ++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index f2dbf1c661..151d785097 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2005-10-13 Andy Wingo + + * libs/gst/dataprotocol/dataprotocol.c (gst_dp_packet_from_caps): + Fix Timmeke Waymans bug. + (gst_dp_caps_from_packet): Make sure we pass a NUL-terminated + string of the proper length to gst_caps_from_string. There's a + potential for, before this fix, that this could cause someone + connecting over the network to cause a segfault if the payload is + not NUL-terminated. + 2005-10-13 Stefan Kost * docs/design/draft-push-pull.txt: @@ -34,7 +44,6 @@ Added gst_tag_list_get_date() and gst_tag_list_get_date_index(). GST_TAG_DATE now has a tag type of GST_TYPE_DATE (#170777). ->>>>>>> 1.1723 2005-10-13 Julien MOUTTE * gst/base/gstcollectpads.c: (gst_collectpads_event), @@ -111,6 +120,7 @@ (gst_file_sink_event), (gst_file_sink_render): Flush before seeking. +>>>>>>> 1.1724 2005-10-12 Andy Wingo * gst/gst.c (gst_init_check): Ignore unknown options, as has @@ -727,7 +737,7 @@ * libs/gst/dataprotocol/dp-private.h: It's about time we bump the version number. Since event types don't fit in the guint8 anymore describing - the payload type, make payload type 16 bits wide. + the payload type, make payload type 16 bits wide. 2005-10-08 Wim Taymans diff --git a/libs/gst/dataprotocol/dataprotocol.c b/libs/gst/dataprotocol/dataprotocol.c index 804ee16dbd..aaf3d3efbb 100644 --- a/libs/gst/dataprotocol/dataprotocol.c +++ b/libs/gst/dataprotocol/dataprotocol.c @@ -254,7 +254,7 @@ gst_dp_packet_from_caps (const GstCaps * caps, GstDPHeaderFlag flags, GST_WRITE_UINT16_BE (h + 4, GST_DP_PAYLOAD_CAPS); /* buffer properties */ - GST_WRITE_UINT32_BE (h + 8, strlen ((gchar *) string) + 1); /* include trailing 0 */ + GST_WRITE_UINT32_BE (h + 6, strlen ((gchar *) string) + 1); /* include trailing 0 */ GST_WRITE_UINT64_BE (h + 10, (guint64) 0); GST_WRITE_UINT64_BE (h + 18, (guint64) 0); GST_WRITE_UINT64_BE (h + 26, (guint64) 0); @@ -444,15 +444,16 @@ gst_dp_caps_from_packet (guint header_length, const guint8 * header, const guint8 * payload) { GstCaps *caps; - const gchar *string; + gchar *string; g_return_val_if_fail (header, NULL); g_return_val_if_fail (payload, NULL); g_return_val_if_fail (GST_DP_HEADER_PAYLOAD_TYPE (header) == GST_DP_PAYLOAD_CAPS, NULL); - string = (gchar *) payload; + string = g_strndup ((gchar *) payload, GST_DP_HEADER_PAYLOAD_LENGTH (header)); caps = gst_caps_from_string (string); + g_free (string); return caps; }