@@ -1655,6 +1655,9 @@ namespace ojph {
16551655 if ((Sqcd & 0x1F ) == 0 )
16561656 {
16571657 num_subbands = (Lqcd - 3 );
1658+ if (num_subbands == 0 )
1659+ OJPH_ERROR (0x0005008A , " QCD marker segment that specifies no "
1660+ " quantization informtion" );
16581661 if (num_subbands > 97 || Lqcd != 3 + num_subbands)
16591662 OJPH_ERROR (0x00050083 , " wrong Lqcd value of %d in QCD marker" , Lqcd);
16601663 for (ui32 i = 0 ; i < num_subbands; ++i)
@@ -1672,6 +1675,9 @@ namespace ojph {
16721675 else if ((Sqcd & 0x1F ) == 2 )
16731676 {
16741677 num_subbands = (Lqcd - 3 ) / 2 ;
1678+ if (num_subbands == 0 )
1679+ OJPH_ERROR (0x0005008B , " QCD marker segment that specifies no "
1680+ " quantization informtion" );
16751681 if (num_subbands > 97 || Lqcd != 3 + 2 * num_subbands)
16761682 OJPH_ERROR (0x00050086 , " wrong Lqcd value of %d in QCD marker" , Lqcd);
16771683 for (ui32 i = 0 ; i < num_subbands; ++i)
@@ -1710,6 +1716,9 @@ namespace ojph {
17101716 if ((Sqcd & 0x1F ) == 0 )
17111717 {
17121718 num_subbands = (Lqcd - offset);
1719+ if (num_subbands == 0 )
1720+ OJPH_ERROR (0x000500AC , " QCC marker segment that specifies no "
1721+ " quantization informtion" );
17131722 if (num_subbands > 97 || Lqcd != offset + num_subbands)
17141723 OJPH_ERROR (0x000500A5 , " wrong Lqcd value of %d in QCC marker" , Lqcd);
17151724 for (ui32 i = 0 ; i < num_subbands; ++i)
@@ -1727,6 +1736,9 @@ namespace ojph {
17271736 else if ((Sqcd & 0x1F ) == 2 )
17281737 {
17291738 num_subbands = (Lqcd - offset) / 2 ;
1739+ if (num_subbands == 0 )
1740+ OJPH_ERROR (0x000500AD , " QCC marker segment that specifies no "
1741+ " quantization informtion" );
17301742 if (num_subbands > 97 || Lqcd != offset + 2 * num_subbands)
17311743 OJPH_ERROR (0x000500A8 , " wrong Lqcc value of %d in QCC marker" , Lqcd);
17321744 for (ui32 i = 0 ; i < num_subbands; ++i)
0 commit comments