diff -Nur epgdumpr2_orig/ts.c epgdumpr2/ts.c
--- epgdumpr2_orig/ts.c	2009-03-15 21:35:57.000000000 +0900
+++ epgdumpr2/ts.c	2009-07-19 18:38:17.000000000 +0900
@@ -202,6 +202,11 @@
 			pk.payloadlen -= 1;
 		}
 		memset(pk.payload, 0xFF, sizeof(pk.payload));
+#if 1	/* 07/07/2009 add: */
+		if( pk.payloadlen > sizeof(pk.payload) ){
+			continue;
+		}
+#endif
 		memcpy(pk.payload, payptr, pk.payloadlen);
     
 		/*
@@ -307,6 +312,14 @@
 
 int checkcrc(SECcache *secs) {
 
+#if 1	/* 07/07/2009 add: ۾ֲΤ */
+	/* ĹĶ뤳ȤʤɤʤϤ... */
+	if( secs->seclen > MAXSECLEN ){
+		/* 褯ʬΤ˴Ƥ */
+		return 0;
+	}
+#endif
+
 	/* ν֤4ХȤCRC32ϡ
 	   CRC׻η0ˤʤ褦ꤵ롣
 	   ͤȯϡ顼ʤΤоݳˤ */
