diff --git a/libavformat/rdt.c b/libavformat/rdt.c
index 158a8212e1444e945fb95d18d80416e4c4cf5014..212e139f3166b29027d990673ff1fb5a28895ba9 100644
--- a/libavformat/rdt.c
+++ b/libavformat/rdt.c
@@ -132,7 +132,7 @@ static int
 rdt_load_mdpr (PayloadContext *rdt, AVStream *st, int rule_nr)
 {
     AVIOContext pb;
-    int size;
+    unsigned int size;
     uint32_t tag;
 
     /**
diff --git a/libavformat/rm.h b/libavformat/rm.h
index a72e8b79974845f7b7fb5af90ae803de714879ef..7b080e2a36c2521d8207d3b24af83bc429c9516e 100644
--- a/libavformat/rm.h
+++ b/libavformat/rm.h
@@ -50,7 +50,7 @@ extern AVInputFormat ff_rdt_demuxer;
  */
 int ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVIOContext *pb,
                                AVStream *st, RMStream *rst,
-                               int codec_data_size, const uint8_t *mime);
+                               unsigned int codec_data_size, const uint8_t *mime);
 
 /**
  * Parse one rm-stream packet from the input bytestream.
diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c
index 19bd7a7a0b2375ea459abad233b946e2a2bbc0d6..d6fc59f5927c24b3fde697542de3d4019083b16f 100644
--- a/libavformat/rmdec.c
+++ b/libavformat/rmdec.c
@@ -303,16 +303,16 @@ static int rm_read_audio_stream_info(AVFormatContext *s, AVIOContext *pb,
     return 0;
 }
 
-int
-ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVIOContext *pb,
-                           AVStream *st, RMStream *rst, int codec_data_size, const uint8_t *mime)
+int ff_rm_read_mdpr_codecdata(AVFormatContext *s, AVIOContext *pb,
+                              AVStream *st, RMStream *rst,
+                              unsigned int codec_data_size, const uint8_t *mime)
 {
     unsigned int v;
     int size;
     int64_t codec_pos;
     int ret;
 
-    if (codec_data_size < 0)
+    if (codec_data_size > INT_MAX)
         return AVERROR_INVALIDDATA;
 
     avpriv_set_pts_info(st, 64, 1, 1000);