pts / sam2p

raster (bitmap) image converter with smart PDF and PostScript (EPS) output
http://pts.50.hu/sam2p/
GNU General Public License v2.0
42 stars 15 forks source link

Assertion Failure in Sam2p at encoder.cpp:738 #74

Closed Ngiong closed 2 years ago

Ngiong commented 3 years ago

Hello, We are currently working on a new fuzz testing feature, and we found a crash in sam2p.

Step to Reproduce We used CXXFLAGS="-g -O0" ./configure to configure sam2p, and build using make, and run it with:

./sam2p <attached_file> EPS: PCX: -pdf:b2 -2 -1

Attachment: poc_0002.txt

Environment

Additional context Here's the stack trace: stack_trace_0002.txt

Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51  ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff769b8b1 in __GI_abort () at abort.c:79
#2  0x00007ffff768b42a in __assert_fail_base (fmt=0x7ffff7812a38 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x5555555b5810 "umax>=1", file=file@entry=0x5555555b5743 "encoder.cpp", line=line@entry=738, function=function@entry=0x5555555b5da0 <RunLengthEncode::vi_write(char const*, unsigned long)::__PRETTY_FUNCTION__> "virtual void RunLengthEncode::vi_write(const char*, slen_t)") at assert.c:92
#3  0x00007ffff768b4a2 in __GI___assert_fail (assertion=0x5555555b5810 "umax>=1", file=0x5555555b5743 "encoder.cpp", line=738, function=0x5555555b5da0 <RunLengthEncode::vi_write(char const*, unsigned long)::__PRETTY_FUNCTION__> "virtual void RunLengthEncode::vi_write(const char*, slen_t)") at assert.c:101
#4  0x0000555555583fc3 in RunLengthEncode::vi_write (this=0x555555813bf0, buf=0x555555813429 "\377\370\377\370\377\370\377\370\377\370\377\370\377\370\377\370\373\370\377\370\377\370\377\370\377", <incomplete sequence \370>, len=26) at encoder.cpp:738
#5  0x000055555557b747 in Rule::writeData (outstream=..., sf=0x7fffffffdcf0) at rule.cpp:718
#6  0x000055555557b867 in Rule::writePalData (outpal=..., outstream=..., sf=0x7fffffffdcf0) at rule.cpp:735
#7  0x000055555557c2f8 in Rule::writeTTE (out=..., outpal=..., outstream=..., template_=0x5555557fdb1a "]F imagemask 0}if/m c E}forall\nF closefile T closefile}i}\n%%BeginData:;\nexec\n`S\n%%EndData\nend restore showpage\n%%Trailer\n%%EOF\n", or_=0x55555580c0a0, sf=0x7fffffffdcf0, stream_writer=0x55555557b7d6 <Rule::writePalData(GenBuffer::Writable&, GenBuffer::Writable&, Image::SampledInfo*)>, strings=0x0) at rule.cpp:901
#8  0x000055555557d864 in Rule::writeTTT (out=..., outpal=..., outstream=..., template_key=0x7fffffffdbb2 "l1thr", or_=0x55555580c0a0, sf=0x7fffffffdcf0, stream_writer=0x55555557b7d6 <Rule::writePalData(GenBuffer::Writable&, GenBuffer::Writable&, Image::SampledInfo*)>, strings=0x0) at rule.cpp:1093
#9  0x0000555555561e76 in out_l1c_work (out=..., or_=0x55555580c0a0, sf=0x7fffffffdcf0) at appliers.cpp:471
#10 0x000055555557b52d in Rule::applyProfile (out=..., rule_list=0x55555580aca0, sf=0x7fffffffdcf0) at rule.cpp:680
#11 0x000055555555fe93 in run_sam2p_engine (sout=..., serr=..., argv1=0x7fffffffdee0, helpp=false) at sam2p_main.cpp:1079
#12 0x0000555555560512 in main (argv=0x7fffffffded8) at sam2p_main.cpp:1148

Thank you.