summary refs log tree commit diff
path: root/bin/pngo.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2018-09-02 22:03:31 -0400
committerJune McEnroe <june@causal.agency>2018-09-02 22:03:31 -0400
commita68441bca195e3ece2ea6d248c1755c82ec44b2b (patch)
tree4aac931789acec5309d0b6f7c882e2be8ee4cc50 /bin/pngo.c
parentUse PascalCase for constants in gfx (diff)
downloadsrc-a68441bca195e3ece2ea6d248c1755c82ec44b2b.tar.gz
src-a68441bca195e3ece2ea6d248c1755c82ec44b2b.zip
malloc IDAT chunks in pngo and glitch
Diffstat (limited to 'bin/pngo.c')
-rw-r--r--bin/pngo.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/bin/pngo.c b/bin/pngo.c
index a6d036c3..d56b0fa6 100644
--- a/bin/pngo.c
+++ b/bin/pngo.c
@@ -300,13 +300,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);
 
ble tapping, reverse scroll, set scaling in wsconsctlJune McEnroe 2021-02-06Set root window to black on purple snowJune McEnroe 2021-02-06Add xmodmap configurationJune McEnroe 2021-02-06Add initial OpenBSD X configurationJune McEnroe 2021-02-06Add xterm output to schemeJune McEnroe