Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

assertions triggered #59

Closed
boxerab opened this issue Feb 6, 2021 · 12 comments
Closed

assertions triggered #59

boxerab opened this issue Feb 6, 2021 · 12 comments

Comments

@boxerab
Copy link
Contributor

boxerab commented Feb 6, 2021

Hi Aous,
it seems like it's still possible to find unexpected conditions in the block coder.

0658dfcd793f1879b56d8959be7a175e85fe8e70.zip

Above is a truncated file, but it does trigger the exception:

ojph_decode_codeblock : line 1789 assert(dp[stride] == 0);

Thanks!
Aaron

@aous72
Copy link
Owner

aous72 commented Feb 6, 2021

Hi Aaron,

Thank you for putting this in.

I could not replicate the problem. I tried
kdu_expand -i 0658dfcd793f1879b56d8959be7a175e85fe8e70 -o test.ppm -resilient true
Without -resilient true the code terminates early, generating an error message. With it, the code expands the file after generating some error messages, but the line 1789 is never reached.

The exception is occurring in the significance propagation pass where a coefficient has to be zero before it is changed to +1 or -1.
But I did not get there.

Hope this helps.

Kind regards,
Aous.

@boxerab
Copy link
Contributor Author

boxerab commented Feb 7, 2021

Hi Aous,

Thanks for looking at this. It looks like the problem is that when I parse the bit stream, I get two passes for this code block, but
the length of the second pass is set to zero. By the way, this file is generated by a fuzzer, which tries all sorts of nasty tricks
to make the decoder crash :)

Is this a reasonable condition to add to the block decoder ?

if (num_passes > 1 && lengths2 == 0) {
  // log warning
   num_passes = 1;
}
if (num_passes > 3) {
    / log error
    return false
}

Thanks,
Aaron

@aous72
Copy link
Owner

aous72 commented Feb 8, 2021

Hi Aaron,

Thank you for this suggestion. I think it is very reasonable.

Kind regards,
Aous

@boxerab
Copy link
Contributor Author

boxerab commented Feb 8, 2021

Thanks, Aous. I have another exception with another code block from the same file I linked to.
I've pasted the buffer and other details below.

Missing msbs: 9
Number of passes: 1
CUP length : 3676
decoded data: 
[ 0xff, 0x3c, 0xfe, 0xcd, 0xff, 0xba, 0x9d, 0xcf, 0x77, 0x5c, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x26, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x93, 0x93, 0x93, 0x93, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0xff, 0x0, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x6d, 0x75, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x91, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x9b, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x51, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x3b, 0xa1, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x37, 0x39, 0x35, 0x31, 0x31, 0x38, 0x32, 0x37, 0x39, 0x30, 0x33, 0x39, 0x32, 0x30, 0x34, 0x38, 0x31, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0xff, 0x20, 0xff, 0x20, 0xf5, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x28, 0xff, 0x20, 0xff, 0x23, 0x20, 0xff, 0x20, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x90, 0x86, 0x86, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x93, 0x93, 0x93, 0x93, 0x93, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0xff, 0x20, 0x20, 0xff, 0x20, 0xff, 0x20, 0xfe, 0x20, 0xff, 0x23, 0x20, 0xe8, 0x1, 0x0, 0x0, 0xff, 0x23, 0x1, 0x20, 0xff, 0x2d, 0xff, 0x20, 0xff, 0x20, 0xff, 0x7e, 0xff, 0x20, 0xff, 0x0, 0x1, 0x7, 0xc, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x6d, 0x71, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x7f, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x94, 0x93, 0x93, 0xa8, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x13, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x93, 0x93, 0x93, 0x93, 0x2, 0x0, 0x0, 0x0, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x9b, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x51, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x4, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x3b, 0xa1, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x33, 0x30, 0x35, 0x38, 0x33, 0x39, 0x33, 0x39, 0x35, 0x35, 0x31, 0x32, 0x31, 0x33, 0x37, 0x39, 0x35, 0x34, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0xff, 0x20, 0xff, 0x20, 0xf5, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x28, 0x99, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xaa, 0x40, 0x0, 0x0, 0x2, 0x0, 0xf6, 0x2a, 0x88, 0xff, 0xff, 0xff, 0x5, 0xff, 0x75, 0x0, 0x15, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x1, 0x31, 0x0, 0x2, 0x1, 0x40, 0xff, 0xff, 0xff, 0x5, 0xff, 0x75, 0x0, 0x15, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x1, 0x31, 0x0, 0x2, 0x1, 0x40, 0xff, 0xff, 0xff, 0x5, 0xff, 0x75, 0x0, 0x15, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x1, 0x31, 0x0, 0x2, 0x1, 0x40, 0xff, 0xff, 0xff, 0x5, 0xff, 0x75, 0x0, 0x15, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x1, 0x31, 0x0, 0x77, 0x77, 0x77, 0x77, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0x20, 0xff, 0xff, 0x20, 0x20, 0xff, 0x20, 0xff, 0x20, 0xfe, 0x20, 0xff, 0x23, 0x20, 0xe8, 0x1, 0x0, 0x0, 0xff, 0x23, 0x1, 0x20, 0xff, 0x2d, 0xff, 0x20, 0xff, 0x20, 0xff, 0x7e, 0xff, 0x20, 0xff, 0x0, 0x1, 0x7, 0xc, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x6d, 0x71, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x6d, 0x71, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x92, 0x93, 0x93, 0x93, 0x93, 0x13, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x13, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x41, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x8a, 0x93, 0x93, 0x93, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x6c, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0xe, 0xd6, 0x25, 0x2e, 0xe5, 0xbb, 0x5f, 0xae, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x6a, 0x50, 0x20, 0xc, 0xff, 0xc2, 0xa0, 0xff, 0x20, 0x88, 0x61, 0x0, 0x80, 0x0, 0x80, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x9c, 0x58, 0xf4, 0x9c, 0xc0, 0xf5, 0x9e, 0x32, 0xf2, 0xb8, 0xe7, 0x6a, 0xd0, 0x4, 0xe0, 0xf2, 0xcd, 0xaa, 0x99, 0x54, 0xad, 0xa0, 0xa0, 0x15, 0xc0, 0xd4, 0xde, 0xaa, 0x56, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x1e, 0xa0, 0x65, 0xfe, 0x47, 0x80, 0x80, 0xb2, 0x17, 0x42, 0xb7, 0x6a, 0xee, 0x83, 0x6d, 0xeb, 0x69, 0x5d, 0x9d, 0xd3, 0x2e, 0x94, 0xd7, 0x3b, 0xb0, 0xbe, 0xde, 0xbb, 0xa3, 0x66, 0x80, 0x0, 0x80, 0x0, 0x0, 0x80, 0x41, 0x0, 0x0, 0x7, 0x68, 0x99, 0x9e, 0x74, 0xf0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x80, 0x80, 0x80, 0xe4, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0x2b, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x0, 0x23, 0x13, 0xdb, 0x9a, 0xf8, 0xc1, 0xd9, 0xdc, 0xa4, 0x42, 0xfb, 0x84, 0x3e, 0x82, 0xeb, 0x69, 0xe7, 0x7b, 0x56, 0xca, 0xbf, 0x30, 0x7d, 0xbb, 0x6a, 0x3a, 0x1f, 0x5e, 0xe4, 0xb0, 0xc0, 0x1, 0xb1, 0xd0, 0x8d, 0x3b, 0xc6, 0xc8, 0xae, 0xcb, 0x0, 0x94, 0xf9, 0xb6, 0xa5, 0xc1, 0xb7, 0x7e, 0x40, 0xa4, 0x1f, 0x9d, 0xaa, 0x2c, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x20, 0xff, 0x4f, 0xff, 0x5d, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xef, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0x41, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x2f, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x2d, 0x0, 0x0, 0xff, 0x4d, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x0, 0xff, 0x4f, 0xff, 0x51, 0x0, 0xb6, 0x1d, 0xd5, 0x81, 0xd4, 0x97, 0xe3, 0xa1, 0xee, 0xac, 0xfd, 0xa9, 0x9f, 0x1e, 0x3f, 0x55, 0x6f, 0x49, 0x17, 0xc7, 0xdb, 0xd5, 0x43, 0xda, 0xf7, 0xed, 0x35, 0xf5, 0x4, 0x79, 0x7e, 0xf4, 0xdd, 0x76, 0x91, 0xfd, 0xa6, 0xff, 0x3d, 0x32, 0xc3, 0xe1, 0xf6, 0x42, 0x1f, 0xf, 0xbe, 0x3e, 0x68, 0x5e, 0x31, 0xaf, 0x33, 0xaf, 0x5c, 0x8f, 0x58, 0xae, 0x92, 0x5f, 0x97, 0xf7, 0x49, 0x3b, 0xc7, 0x37, 0xe5, 0x89, 0xe7, 0xbf, 0xe0, 0xee, 0x77, 0x4d, 0x7f, 0x8a, 0xe3, 0xa7, 0x2b, 0xd6, 0x48, 0x80, 0x0, 0x0, 0x0, 0x0, 0x12, 0x39, 0x18, 0x0, 0x0, 0x91, 0x56, 0x0, 0x0, 0x5b, 0x72, 0xa6, 0x54, 0x80, 0x0, 0x0, 0x0, 0x0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x0, 0x0, 0x80, 0x0, 0x0, 0x80, 0x0, 0x0, 0x80, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x93, 0x48, 0xa1, 0xe3, 0xe5, 0xed, 0x8b, 0x1d, 0x89, 0x19, 0x88, 0x5a, 0x55, 0xef, 0x54, 0x30, 0x52, 0xed, 0xf3, 0x59, 0xfe, 0xa2, 0xed, 0x28, 0x58, 0xae, 0x39, 0x7f, 0x56, 0x3, 0x65, 0xbe, 0xda, 0xac, 0x25, 0xd2, 0x67, 0xef, 0x1a, 0xe1, 0xe, 0xa4, 0x35, 0xef, 0xac, 0x17, 0xdf, 0xa0, 0x63, 0x4c, 0x93, 0x50, 0xf6, 0xab, 0x4c, 0x16, 0xfa, 0xd, 0x1b, 0xfa, 0x65, 0x9f, 0x55, 0xa2, 0x88, 0x8e, 0x9b, 0x77, 0x20, 0x7b, 0x8, 0xbd, 0xff, 0xa, 0xaf, 0xc6, 0xfe, 0x74, 0xa4, 0x58, 0xf4, 0x25, 0xa3, 0xd7, 0x1c, 0x80, 0x8e, 0x6e, 0x2a, 0x88, 0xc, 0x4, 0x16, 0x4, 0x3a, 0xa, 0x45, 0xea, 0x69, 0x6c, 0x7d, 0x9e, 0xac, 0xbd, 0xee, 0x89, 0xd7, 0xe6, 0xbb, 0xfb, 0x88, 0x9, 0xe3, 0x19, 0x6b, 0x69, 0xb1, 0x90, 0x93, 0x4c, 0x6e, 0x6f, 0xc3, 0xa8, 0x9c, 0x35, 0xfb, 0x3, 0x7e, 0x79, 0x64, 0x2c, 0x45, 0x2, 0x43, 0x1c, 0x93, 0xf6, 0x45, 0x29, 0xcb, 0x68, 0xe6, 0x40, 0x69, 0x44, 0xe3, 0x17, 0x6b, 0xa4, 0x4a, 0xe8, 0x6e, 0xd9, 0xee, 0x3c, 0x5d, 0x62, 0xee, 0xab, 0x13, 0x35, 0xb2, 0x20, 0xef, 0x37, 0x0, 0xc8, 0xde, 0x1d, 0x69, 0xc1, 0x28, 0xa8, 0x12, 0x6, 0x5e, 0x21, 0x77, 0xf6, 0x4a, 0x1b, 0xd0, 0xe, 0x76, 0x49, 0x4e, 0x8e, 0xcf, 0xce, 0x1a, 0x13, 0x4c, 0x60, 0xf2, 0xc6, 0xc8, 0xa7, 0x5a, 0xa3, 0xca, 0xc5, 0x59, 0xaf, 0xfa, 0x1f, 0x3f, 0x51, 0xb1, 0x49, 0x40, 0xb4, 0x5, 0xb7, 0x5, 0x51, 0xeb, 0x89, 0xe2, 0x26, 0x1e, 0xd9, 0x19, 0x47, 0xec, 0xc8, 0xa6, 0x66, 0xf4, 0x84, 0xe, 0x83, 0x31, 0xcf, 0xd9, 0x11, 0xc9, 0xc4, 0x84, 0xfd, 0x1a, 0x16, 0x75, 0x8c, 0xf7, 0xd4, 0x28, 0xcf, 0xb3, 0xe7, 0x1e, 0x60, 0x1a, 0x6a, 0xc6, 0xf6, 0xc4, 0x7a, 0x66, 0xcb, 0x40, 0x81, 0x31, 0xd3, 0x27, 0x15, 0xe6, 0x87, 0x5e, 0xd4, 0x83, 0x4a, 0x4, 0xad, 0x28, 0xb2, 0x50, 0xe9, 0x1f, 0x8b, 0x92, 0x26, 0x41, 0x39, 0x69, 0x26, 0xe1, 0xe7, 0x2f, 0x8, 0xea, 0xd5, 0x61, 0x56, 0x8e, 0x5f, 0xca, 0x9b, 0xa8, 0xa0, 0x5b, 0x4a, 0xf7, 0xae, 0xc0, 0xf2, 0xe2, 0x82, 0x43, 0xac, 0x9f, 0xcf, 0x5e, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0xb0, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0xf1, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x41, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45 ]

ojph_block_decoder.cpp:949: void ojph::local::frwd_advance(ojph::local::frwd_struct*, ojph::ui32): Assertion `num_bits <= msp->bits' failed.

@aous72
Copy link
Owner

aous72 commented Feb 9, 2021

Hi Aaron,

Thank you for this test; it is very important.
If you recall, we had add these lines

          if (U_q[0] > missing_msbs || U_q[1] > missing_msbs)
            return false;

in two places in the decoder. To fix the current issue I suggest you move the second of these two lines from 1437-1438 to
line 1457 (before the movement). I will create a commit after this.

I like the way you sent me the offending codeblock. It was easy for me to added to my code and test it. I only needed codeblock width and height, so I used the default 64x64.

Thank you for all the help.

Kind regards,
Aous.

@aous72
Copy link
Owner

aous72 commented Feb 9, 2021

Sorry line numbers. I am preparing the commit.

Edit: I need to think about it more. I will commit it tomorrow.

@boxerab
Copy link
Contributor Author

boxerab commented Feb 9, 2021

Hi Aous,.
Glad I can be of some service to the project,
and thank you for making this publicly available as open source.
Best,
Aaron

@boxerab
Copy link
Contributor Author

boxerab commented Feb 9, 2021

Aous, I found another issue :

Block width: 64
Block height: 64
Missing msbs: 9
Number of passes: 1
CUP length : 687
decoded data: 
[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x7, 0x1, 0x20, 0xff, 0x52, 0x0, 0xc, 0x2, 0x0, 0xf9, 0x50, 0x0, 0x3, 0x5, 0x4, 0x21, 0x1, 0xff, 0x5c, 0x0, 0xd, 0x0, 0x40, 0x40, 0x48, 0x48, 0x3c, 0x48, 0x50, 0x48, 0xc8, 0x2f, 0xff, 0x90, 0x0, 0xa, 0x0, 0x0, 0x0, 0x0, 0x1c, 0xa3, 0x0, 0x1, 0xff, 0x93, 0x0, 0xff, 0x0, 0x0, 0x0, 0xc, 0x6a, 0x50, 0x20, 0x20, 0xd, 0xa, 0x87, 0xa, 0x0, 0x0, 0x0, 0x18, 0x66, 0x74, 0x79, 0x70, 0x6a, 0x70, 0xff, 0xff, 0x0, 0x21, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x70, 0x6a, 0x0, 0x32, 0x20, 0x0, 0x0, 0x0, 0x2d, 0x6a, 0x48, 0x70, 0x68, 0x0, 0x0, 0x0, 0x16, 0x69, 0x68, 0x64, 0x72, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0x3, 0x0, 0xba, 0x1, 0x7, 0x7, 0x0, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0x6f, 0x6c, 0x72, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x11, 0x0, 0x3, 0x5c, 0xca, 0x6a, 0x70, 0x32, 0x63, 0xff, 0x4f, 0xff, 0x51, 0x0, 0x29, 0x0, 0x1, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0x71, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x1, 0x7, 0x1, 0x1, 0xff, 0x52, 0x0, 0xc, 0x0, 0x0, 0x0, 0x1, 0x0, 0x5, 0x4, 0x4, 0x2b, 0x1, 0xff, 0x5c, 0x0, 0x13, 0x20, 0x50, 0x58, 0x58, 0x60, 0x58, 0x58, 0x60, 0x58, 0x58, 0x60, 0x58, 0x58, 0x75, 0xff, 0x90, 0x41, 0x10, 0xb0, 0xff, 0x90, 0x0, 0xa, 0x0, 0x0, 0xf1, 0xff, 0x10, 0xab, 0x0, 0x1, 0xff, 0x5e, 0x0, 0x5, 0x0, 0x0, 0x7, 0xff, 0x93, 0xe2, 0x26, 0x26, 0x87, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x40, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x33, 0x30, 0x37, 0x0, 0xa, 0x0, 0x0, 0x0, 0xf4, 0x5c, 0x70, 0x0, 0x1, 0xff, 0x93, 0xcf, 0x0, 0x0, 0x0, 0x45, 0xe, 0xfb, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xfe, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0xf, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x53, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0xe8, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1d, 0xf3, 0xa0, 0x80, 0xb0, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x38, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x2c, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x23, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0xe1, 0xd6, 0x1f, 0x20, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f ]
ojph_block_decoder.cpp:253: void ojph::local::mel_init(ojph::local::dec_mel_st*, ojph::ui8*, int, int): Assertion `melp->unstuff == false || melp->data[0] <= 0x8F' failed.

aous72 added a commit that referenced this issue Feb 9, 2021
…r than missing_msbs+1. There is also a hardening step to prevent more than 1 coding pass if the length of subsquent passes is 0. Also we do not support more than 3 coding pass -- it is possible to have more than 3 coding passes; in this case, the decoder should only decode the last cleanup pass, and subsequent significance propagation pass and magnitude refinement pass, if they exist. We do not support this.
@aous72
Copy link
Owner

aous72 commented Feb 9, 2021

Hi Aaron,

Thank you for this issue. It is useful to give some background.
The coded data cannot have a sequence larger than 0xFF8F (or in the range 0xFF90-0xFFFF), because these are used for markers and other uses, and the 0 is useful for re-synchronizing transmitter-receiver if this data is sent over a channel. There is decent amount of code to insert a 0 bit if value larger than 0xFF8F occurred in the encoder, and to remove these 0s during decoding.

This block and the previous block have this issue. I am not very sure if I should flag such cases. For a reference implementation, you would be interested in this, but for a decoder, I think it is reasonable to ignore these case to make decoding faster, if they do not case a fault, a buffer overrun, or the like.

The assert occurred because we have 0xFFFF in the sequence, and the assert tests for sequences larger than 0xFF8F. I am fine with decoding a malformed code block to generate erroneous decoded data.

Thank you.

Kind regards,
Aous

PS. I just made a commit addressing the previous issues in this issue.

@boxerab
Copy link
Contributor Author

boxerab commented Feb 9, 2021

Hi Aous,

Thanks a lot for taking a look. So, yes, bit stuffing is expected by the decoder. It would be interesting to benchmark with and without extra checks for markers. My guess is that we wouldn't see a noticeable difference, at least on the CPU.

If the checks are not there, fuzzers will easily create images that will crash the decoder, and possibly cause security issues.
However, if the decoder will not crash but simply output malformed blocks, I think it should be fine. But, in this case, should we not remove the asserts ?

Also, thank you for fixing the previous issue.

Best,
Aaron

@aous72
Copy link
Owner

aous72 commented Feb 17, 2021

Hi Aaron,

Thank you for the feedback.

I agree with you that detecting bitstuffing errors might not be noticeable.

I have just commented out that assert. See how it goes with you.

Thank you for your continuous support.

Kind regards,
Aous.

@boxerab
Copy link
Contributor Author

boxerab commented Feb 17, 2021

Thanks, Aous. I have commented out all asserts in my code, and there are no valgrind errors. So, it looks like it's safe to do this.
Cheers,
Aaron

@boxerab boxerab closed this as completed Apr 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants