From f1a78a551cabe3ce95e076defc03ab41cfa825b6 Mon Sep 17 00:00:00 2001 From: jakob Date: Mon, 26 Jun 2017 12:38:08 -0400 Subject: Add archive integrity checks. (Thanks, AFL\!) --- src/compress.c | 2 ++ src/main.c | 4 ++++ 2 files changed, 6 insertions(+) (limited to 'src') diff --git a/src/compress.c b/src/compress.c index 4df5ef7..22b4c50 100644 --- a/src/compress.c +++ b/src/compress.c @@ -44,6 +44,8 @@ struct stream *stream_inflate(struct stream *s, size_t len, int ret; struct stream *new = stream_new(decompressed_len); + if (new == NULL) + return NULL; do { strm.avail_in = len; diff --git a/src/main.c b/src/main.c index d50ee4c..90fbb2f 100644 --- a/src/main.c +++ b/src/main.c @@ -156,6 +156,10 @@ static void map_entries(char *path, struct params p) { return; } + if (h->table_offset > archive->len) { + fprintf(stderr, "Invalid table offset. Archive corrupt.\n"); + return; + } stream_seek(archive, h->table_offset, SEEK_SET); struct stream *table = load_table(archive); -- cgit v1.3