[libdvbpsi-devel] TOT CRC Problem

Jean-Paul Saman jpsaman at videolan.org
Wed Jan 23 14:18:03 CET 2013


HI Angelo,

Thank you for bringing this to my attention.

On Tue, Jan 22, 2013 at 12:20 PM, Angelo Schiavone <
angelo.schiavone at gmail.com> wrote:

> Hi guys, it's me again.
> I found a bug in libdvbpsi TOT table decoding.
> Every time a TOT occurres in my transport stream the library throws a CRC
> error even if the CRC is correct.
> That's because "dvbpsi_ValidPSISection" always return false since TOT
> tables have "section_syntax_indicator" set to 0
> but it has a CRC field.
> TOT has section_syntax_indicator==0 and CRC field (ETSI EN 300 468
> clause 5.2.6) but the dvbpsi_ValidPSISection function assumes that any table
> which have "section_syntax_indicator" set to 0 has no CRC field, thus it
> returns false, which comes to TOT crc error.
>
>
Removing this check will break RST, ST and DIT  tables, both have
section_indicator set to 0 and do not have a CRC32 field.
The change should be a little more intelligent, then that and properly
reviewed and tested.

Kind regards,

Jean-Paul Saman.


>
> bool dvbpsi_ValidPSISection(dvbpsi_psi_section_t* p_section)
>
> {
>
>     if (p_section->b_syntax_indicator)
>
>     {
>
>         /* Check the CRC_32 if b_syntax_indicator is false */
>
>         uint32_t i_crc = 0xffffffff;
>
>         uint8_t* p_byte = p_section->p_data;
>
>          while(p_byte < p_section->p_payload_end + 4)
>
>         {
>
>             i_crc = (i_crc << 8) ^ dvbpsi_crc32_table[(i_crc >> 24) ^ (*p_byte)];
>
>             p_byte++;
>
>         }
>
>          if (i_crc == 0)
>
>             return true;
>
>         else
>
>             return false;
>
>     }
>
>     else
>
>     {
>
>         /* No check to do if b_syntax_indicator is false */
>
>         return false;
>
>     }
>
> }
>
>
>
> _______________________________________________
> libdvbpsi-devel mailing list
> libdvbpsi-devel at videolan.org
> http://mailman.videolan.org/listinfo/libdvbpsi-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/libdvbpsi-devel/attachments/20130123/94fc559a/attachment.html>


More information about the libdvbpsi-devel mailing list