diff --git a/common/GNUmakefile b/common/GNUmakefile index 38924924..60fa37d8 100644 --- a/common/GNUmakefile +++ b/common/GNUmakefile @@ -53,6 +53,7 @@ override INTERNAL_CFLAGS := \ -nostdinc \ -Wno-address-of-packed-member \ -Wshadow \ + -Wvla \ -mno-80387 \ -mno-mmx \ -mno-3dnow \ diff --git a/common/fs/ext2.s2.c b/common/fs/ext2.s2.c index 1e7a7791..82c8a6c4 100644 --- a/common/fs/ext2.s2.c +++ b/common/fs/ext2.s2.c @@ -271,13 +271,16 @@ next: ¤t_inode, fd, alloc_map); // name read - char name[dir->name_len + 1]; + char *name = ext_mem_alloc(dir->name_len + 1); memset(name, 0, dir->name_len + 1); inode_read(name, i + sizeof(struct ext2_dir_entry), dir->name_len, ¤t_inode, fd, alloc_map); - if (!strcmp(token, name)) { + int test = strcmp(token, name); + pmm_free(name, dir->name_len + 1); + + if (test == 0) { if (escape) { ret = true; goto out; diff --git a/decompressor/GNUmakefile b/decompressor/GNUmakefile index fb307ff1..543578fd 100644 --- a/decompressor/GNUmakefile +++ b/decompressor/GNUmakefile @@ -31,6 +31,8 @@ override INTERNAL_CFLAGS := \ -fomit-frame-pointer \ -nostdinc \ -Wno-address-of-packed-member \ + -Wshadow \ + -Wvla \ -mno-80387 \ -mno-mmx \ -mno-3dnow \