Comments (12)
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.
from openjph.
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
from openjph.
Hi Aaron,
Thank you for this suggestion. I think it is very reasonable.
Kind regards,
Aous
from openjph.
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.
from openjph.
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.
from openjph.
Sorry line numbers. I am preparing the commit.
Edit: I need to think about it more. I will commit it tomorrow.
from openjph.
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
from openjph.
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.
from openjph.
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.
from openjph.
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
from openjph.
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.
from openjph.
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
from openjph.
Related Issues (20)
- typo in CMakeLists.txt HOT 1
- ojph_compress support for uppercase file extensions HOT 1
- signed 16bit negative values mismatch in interoperablity test between openjph and kakadu HOT 2
- Incorrect COM marker length HOT 1
- openjph decompression fails HOT 2
- Question : what format to be used to decompress the color HTJ2K compressed imaging data HOT 6
- Build should not fail if SIMD optimizations are enabled and your CPU doesn't support them HOT 2
- Support multiple cores HOT 3
- Lossless encode increase image size HOT 2
- Error decode PPM HOT 7
- Have crash in armeabi-v7a ( 32-bit ARM-based CPUs) HOT 13
- seg fault with HT codestream HOT 4
- ojph_expand error/warning behaviour with quality layer placeholder passes HOT 1
- Does OpenJPH supoort MRC? HOT 1
- Possible bug in codeblock::gen_find_max_val() HOT 2
- CMake improvements HOT 6
- Automated Testing Improvements HOT 1
- Remove xcode specific files HOT 1
- The block coder should be usable without pulling in the rest of OpenJPH HOT 6
- Removing the ojph_ prefix. HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from openjph.