libs/gst/dataprotocol/dataprotocol.c (gst_dp_packet_from_caps): Fix Timmeke Waymans bug.

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.
This commit is contained in:
Andy Wingo 2005-10-13 16:26:12 +00:00
parent d2cd55ab84
commit 8d0b8f242a
2 changed files with 16 additions and 5 deletions

View file

@ -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),
@ -111,6 +120,7 @@
(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
@ -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 <wim@fluendo.com>

View 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;
}