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.
GST_WRITE_UINT16_BE (h + 4, GST_DP_PAYLOAD_CAPS);
/* buffer properties */
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);
GST_WRITE_UINT64_BE (h + 10, (guint64) 0);
GST_WRITE_UINT64_BE (h + 18, (guint64) 0);
GST_WRITE_UINT64_BE (h + 26, (guint64) 0);
const guint8 * payload)
{
GstCaps *caps;
const guint8 * payload)
{
GstCaps *caps;
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);
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);
caps = gst_caps_from_string (string);