Index: libs/libmythtv/dvbsiparser.cpp
===================================================================
--- libs/libmythtv/dvbsiparser.cpp	(revision 9326)
+++ libs/libmythtv/dvbsiparser.cpp	(working copy)
@@ -293,7 +293,9 @@
 
                 int rsz = read(pollArray[i].fd, &buffer, MAX_SECTION_SIZE);
 
-                if (rsz > 0)
+                /* minimal valid DVB section is the TDT of size 8
+                   validate the size of the buffer against the encoded section_length */
+                if (rsz >= 8 && (rsz-3 == ((buffer[1] & 0x0f) << 8 | buffer[2])))
                 {
                     ParseTable(buffer, rsz,
                                PIDfilterManager[pollArray[i].fd].pid);
@@ -301,6 +303,12 @@
                     continue;
                 }
 
+                if (rsz > 0)
+                {
+                    processed = true;
+                    continue;
+                }
+
                 if (rsz == -1 && errno == EAGAIN)
                 {
                     i--;
