]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
dvbpsi: add sanity checks to psi_desc_ca()
authorJaroslav Kysela <perex@perex.cz>
Thu, 7 Dec 2017 14:28:33 +0000 (15:28 +0100)
committerJaroslav Kysela <perex@perex.cz>
Thu, 7 Dec 2017 14:28:48 +0000 (15:28 +0100)
src/input/mpegts/dvb_psi.c

index 9d822151ea61a43f626f298220e2cf7858cdae8b..002dca85faec0ab410c38f2970d65a805b211037 100644 (file)
@@ -2205,11 +2205,18 @@ psi_desc_ca(mpegts_table_t *mt, mpegts_service_t *t, const uint8_t *buffer, int
   int r = 0;
   int i;
   uint32_t provid = 0;
-  uint16_t caid = extract_2byte(buffer);
-  uint16_t pid = extract_pid(buffer + 2);
+  uint16_t caid, pid;
+
+  if (size < 4)
+    return 0;
+
+  caid = extract_2byte(buffer);
+  pid = extract_pid(buffer + 2);
 
   switch (caid & 0xFF00) {
   case 0x0100: // SECA/Mediaguard
+    if (size < 6)
+      return 0;
     provid = extract_2byte(buffer + 4);
 
     //Add extra providers, if any