diff options
author | June McEnroe <june@causal.agency> | 2018-09-02 22:03:31 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2018-09-02 22:03:31 -0400 |
commit | 5ea9ed57cb6586e736f20729ceb1a28cb5607aee (patch) | |
tree | a4286359d113e80fa4362aa69e94fce622f11564 /bin/glitch.c | |
parent | Use PascalCase for constants in gfx (diff) | |
download | src-5ea9ed57cb6586e736f20729ceb1a28cb5607aee.tar.gz src-5ea9ed57cb6586e736f20729ceb1a28cb5607aee.zip |
malloc IDAT chunks in pngo and glitch
Diffstat (limited to '')
-rw-r--r-- | bin/glitch.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/bin/glitch.c b/bin/glitch.c index a8037291..e23878f8 100644 --- a/bin/glitch.c +++ b/bin/glitch.c @@ -209,13 +209,17 @@ static void readData(void) { for (;;) { struct Chunk chunk = readChunk(); if (0 == memcmp(chunk.type, "IDAT", 4)) { - uint8_t idat[chunk.size]; - readExpect(idat, sizeof(idat), "image data"); + uint8_t *idat = malloc(chunk.size); + if (!idat) err(EX_OSERR, "malloc"); + + readExpect(idat, chunk.size, "image data"); readCrc(); stream.next_in = idat; - stream.avail_in = sizeof(idat); + stream.avail_in = chunk.size; int error = inflate(&stream, Z_SYNC_FLUSH); + free(idat); + if (error == Z_STREAM_END) break; if (error != Z_OK) errx(EX_DATAERR, "%s: inflate: %s", path, stream.msg); |