Index: dvb_demux.c
===================================================================
RCS file: /cvsroot/tuxbox/driver/dvb/drivers/media/dvb/dvb-core/dvb_demux.c,v
retrieving revision 1.2
diff -u -r1.2 dvb_demux.c
--- dvb_demux.c	2002/10/22 02:12:46	1.2
+++ dvb_demux.c	2002/11/04 15:53:16
@@ -155,11 +155,16 @@
 	0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,
 	0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4};
 
-u32 dvb_crc32(u8 *data, int len)
+u32 dvb_crc32(u8 *data, size_t len, u32 seed)
 {
 	int i;
-	u32 crc = 0xffffffff;
-
+	u32 crc;
+	
+	if (seed)
+		crc = seed;
+	else
+		crc = 0xffffffff;
+	
 	for (i=0; i<len; i++)
                 crc = (crc << 8) ^ dvb_crc_table[((crc >> 24) ^ *data++) & 0xff];
 	return crc;
@@ -169,7 +174,7 @@
 {
         u32 crc;
 
-        crc=dvb_crc32(data,length);
+        crc=dvb_crc32(data,length,0);
         data[length]   = (crc>>24)&0xff;
         data[length+1] = (crc>>16)&0xff;
         data[length+2] = (crc>>8)&0xff;
@@ -240,6 +245,9 @@
                 return 0;
         if (!(f=dvbdmxfeed->filter))
                 return 0;
+        if ((dvbdmxfeed->check_crc) && 
+	    (dvb_crc32(dvbdmxfeed->secbuf, dvbdmxfeed->seclen, 0)))
+		return -1;
         do 
                 if (dvb_dmx_swfilter_sectionfilter(dvbdmxfeed, f)<0)
                         return -1;
Index: dvb_ksyms.c
===================================================================
RCS file: /cvsroot/tuxbox/driver/dvb/drivers/media/dvb/dvb-core/dvb_ksyms.c,v
retrieving revision 1.2
diff -u -r1.2 dvb_ksyms.c
--- dvb_ksyms.c	2002/10/22 02:12:46	1.2
+++ dvb_ksyms.c	2002/11/04 15:53:16
@@ -15,6 +15,7 @@
 EXPORT_SYMBOL(dvb_dmx_release);
 EXPORT_SYMBOL(dvb_dmx_swfilter_packet);
 EXPORT_SYMBOL(dvb_dmx_swfilter_packets);
+EXPORT_SYMBOL(dvb_crc32);
 
 EXPORT_SYMBOL(dvb_register_frontend);
 EXPORT_SYMBOL(dvb_unregister_frontend);
Index: dvb_demux.h
===================================================================
RCS file: /cvsroot/tuxbox/driver/dvb/drivers/media/dvb/dvb-core/dvb_demux.h,v
retrieving revision 1.2
diff -u -r1.2 dvb_demux.h
--- dvb_demux.h	2002/10/22 02:12:46	1.2
+++ dvb_demux.h	2002/11/04 15:56:16
@@ -130,5 +130,6 @@
 int dvb_dmx_release(struct dvb_demux *dvbdemux);
 void dvb_dmx_swfilter_packet(struct dvb_demux *dvbdmx, const u8 *buf);
 void dvb_dmx_swfilter_packets(struct dvb_demux *dvbdmx, const u8 *buf, int count);
+u32 dvb_crc32(u8 *data, size_t len, u32 seed);
 
 #endif /* _DVB_DEMUX_H_ */
