libs/gst/dataprotocol/dataprotocol.c (gst_dp_packet_from_caps): Fix Timmeke Waymans...
authorAndy Wingo <wingo@pobox.com>
Thu, 13 Oct 2005 16:26:12 +0000 (16:26 +0000)
committerAndy Wingo <wingo@pobox.com>
Thu, 13 Oct 2005 16:26:12 +0000 (16:26 +0000)
Original commit message from CVS:
2005-10-13  Andy Wingo  <wingo@pobox.com>

* 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
libs/gst/dataprotocol/dataprotocol.c

index f2dbf1c..151d785 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2005-10-13  Andy Wingo  <wingo@pobox.com>
+
+       * 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  <ensonic@users.sf.net>
 
        * 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  <julien@moutte.net>
 
        * gst/base/gstcollectpads.c: (gst_collectpads_event),
        (gst_file_sink_event), (gst_file_sink_render):
        Flush before seeking.
 
+>>>>>>> 1.1724
 2005-10-12  Andy Wingo  <wingo@pobox.com>
 
        * gst/gst.c (gst_init_check): Ignore unknown options, as has
        * 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  <wim@fluendo.com>
 
index 804ee16..aaf3d3e 100644 (file)
@@ -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;
 }