rtmp2: Reject oversized messages
authorJan Alexander Steffens (heftig) <jsteffens@make.tv>
Fri, 14 Feb 2020 11:20:32 +0000 (12:20 +0100)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 21 Feb 2020 15:20:41 +0000 (15:20 +0000)
We only have 24 bits for the size, so reject anything larger.

gst/rtmp2/rtmp/rtmpchunkstream.c
gst/rtmp2/rtmp/rtmpmessage.h

index 1a25597..1ea1064 100644 (file)
@@ -188,6 +188,8 @@ select_chunk_type (GstRtmpChunkStream * cstream, GstBuffer * buffer)
   meta->size = gst_buffer_get_size (buffer);
   meta->cstream = cstream->id;
 
+  g_return_val_if_fail (meta->size <= GST_RTMP_MAXIMUM_MESSAGE_SIZE, -1);
+
   if (!old_buffer) {
     GST_TRACE ("Picking header 0: no previous header");
     meta->ts_delta = dts_to_abs_ts (buffer);
index 9761d58..ff4bef8 100644 (file)
@@ -25,6 +25,8 @@
 
 G_BEGIN_DECLS
 
+#define GST_RTMP_MAXIMUM_MESSAGE_SIZE 0xFFFFFF
+
 typedef enum {
   GST_RTMP_MESSAGE_TYPE_INVALID = 0,
   GST_RTMP_MESSAGE_TYPE_SET_CHUNK_SIZE = 1,