summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristophe Grenier <grenier@cgsecurity.org>2018-03-15 10:08:04 +0100
committerChristophe Grenier <grenier@cgsecurity.org>2018-03-15 10:08:04 +0100
commitaee0c5d0e3d9cbf0a7d10340ee51e025f7c081c6 (patch)
treea49b8502fbd9e5552e4836843b4efd0adff788a6
parent8fd273959816b12b60a1093e1037bc2a6a26d3d2 (diff)
Avoid variable-length array (vla)
-rw-r--r--INFO2
-rw-r--r--configure.ac7
-rw-r--r--src/fat.c7
-rw-r--r--src/hpfs.c12
4 files changed, 17 insertions, 11 deletions
diff --git a/INFO b/INFO
index 9b23918..d85a196 100644
--- a/INFO
+++ b/INFO
@@ -1,2 +1,2 @@
TestDisk & PhotoRec , https://www.cgsecurity.org
-Copyright (C) 1998-2017 Christophe GRENIER <grenier@cgsecurity.org>
+Copyright (C) 1998-2018 Christophe GRENIER <grenier@cgsecurity.org>
diff --git a/configure.ac b/configure.ac
index e3883ef..ed25851 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6,7 +6,7 @@ AC_INIT([testdisk],[7.1-WIP],[grenier@cgsecurity.org])
AC_LANG(C)
sinclude(acx_pthread.m4)
sinclude(mkdir.m4)
-TESTDISKDATE="February 2018"
+TESTDISKDATE="March 2018"
AC_SUBST(TESTDISKDATE)
AC_DEFINE_UNQUOTED([TESTDISKDATE],"$TESTDISKDATE",[Date of release])
AC_CONFIG_AUX_DIR(config)
@@ -623,7 +623,6 @@ if test "x$with_jpeg" != "xno"; then
else
photorec_LDADD="$photorec_LDADD ${jpeg_lib_a}"
qphotorec_LDADD="$qphotorec_LDADD ${jpeg_lib_a}"
- fidentify_LDADD="$fidentify_LDADD ${jpeg_lib_a}"
fi
have_jpeg=yes
],AC_MSG_WARN(No jpeg library detected))
@@ -830,7 +829,7 @@ if test "x$have_ewf" != "xyes"; then
fi
fi
#-Wconversion -Wmissing-noreturn -ffunction-sections -Wl,--gc-sections -Wl,--print-gc-sections
-for option in -Wdeclaration-after-statement -Wall -MD -Wpointer-arith -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wwrite-strings -W -Wcast-align -Waggregate-return -Wbad-function-cast -Wcast-qual -Wundef -Wredundant-decls -Wsign-compare -Wnested-externs -Winline -Wdisabled-optimization -Wfloat-equal -Wmissing-format-attribute -Wmultichar -Wc++-compat -Wformat=2 -Wunreachable-code
+for option in -Wdeclaration-after-statement -Wall -MD -Wpointer-arith -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wwrite-strings -W -Wcast-align -Waggregate-return -Wbad-function-cast -Wcast-qual -Wundef -Wredundant-decls -Wsign-compare -Wnested-externs -Winline -Wdisabled-optimization -Wfloat-equal -Wmissing-format-attribute -Wmultichar -Wc++-compat -Wformat=2 -Wunreachable-code -Wvla
do
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $option"
@@ -845,7 +844,7 @@ done
unset option
AC_LANG_PUSH([C++])
-for option in -Wall -MD -Wpointer-arith -Wmissing-declarations -Wshadow -Wwrite-strings -W -Wcast-align -Wcast-qual -Wundef -Wredundant-decls -Wsign-compare -Wdisabled-optimization -Wmissing-format-attribute -Wmultichar -Wformat=2 -fvisibility=hidden -fvisibility-inlines-hidden -fPIC
+for option in -Wall -MD -Wpointer-arith -Wmissing-declarations -Wshadow -Wwrite-strings -W -Wcast-align -Wcast-qual -Wundef -Wredundant-decls -Wsign-compare -Wdisabled-optimization -Wmissing-format-attribute -Wmultichar -Wformat=2 -fvisibility=hidden -fvisibility-inlines-hidden -fPIC -Wvla
do
SAVE_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $option"
diff --git a/src/fat.c b/src/fat.c
index 34674bb..f1f3a65 100644
--- a/src/fat.c
+++ b/src/fat.c
@@ -910,11 +910,12 @@ static int fat32_set_part_name(disk_t *disk_car, partition_t *partition, const s
int check_OS2MB(disk_t *disk, partition_t *partition, const int verbose)
{
- unsigned char buffer[disk->sector_size];
- if((unsigned)disk->pread(disk, &buffer, disk->sector_size, partition->part_offset) != disk->sector_size)
+ unsigned char *buffer=(unsigned char *)MALLOC(disk->sector_size);
+ if((unsigned)disk->pread(disk, buffer, disk->sector_size, partition->part_offset) != disk->sector_size)
{
screen_buffer_add("check_OS2MB: Read error\n");
log_error("check_OS2MB: Read error\n");
+ free(buffer);
return 1;
}
if(test_OS2MB(disk,(const struct fat_boot_sector *)buffer,partition,verbose,0)!=0)
@@ -924,9 +925,11 @@ int check_OS2MB(disk_t *disk, partition_t *partition, const int verbose)
log_info("\n\ntest_OS2MB()\n");
log_partition(disk, partition);
}
+ free(buffer);
return 1;
}
partition->upart_type=UP_OS2MB;
+ free(buffer);
return 0;
}
diff --git a/src/hpfs.c b/src/hpfs.c
index 093cdbd..8524491 100644
--- a/src/hpfs.c
+++ b/src/hpfs.c
@@ -28,6 +28,9 @@
#ifdef HAVE_STRING_H
#include <string.h>
#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h> /* free */
+#endif
#include "types.h"
#include "common.h"
#include "fat.h"
@@ -83,11 +86,12 @@ int recover_HPFS(disk_t *disk_car, const struct fat_boot_sector *hpfs_header, pa
int check_HPFS(disk_t *disk_car,partition_t *partition,const int verbose)
{
- unsigned char buffer[disk_car->sector_size];
- if((unsigned)disk_car->pread(disk_car, &buffer, disk_car->sector_size, partition->part_offset) != disk_car->sector_size)
+ unsigned char *buffer=(unsigned char *)MALLOC(disk_car->sector_size);
+ if((unsigned)disk_car->pread(disk_car, buffer, disk_car->sector_size, partition->part_offset) != disk_car->sector_size)
{
screen_buffer_add("check_HPFS: Read error\n");
log_error("check_HPFS: Read error\n");
+ free(buffer);
return 1;
}
if(test_HPFS(disk_car,(const struct fat_boot_sector *)buffer,partition,verbose,0)!=0)
@@ -97,10 +101,10 @@ int check_HPFS(disk_t *disk_car,partition_t *partition,const int verbose)
log_info("\n\ntest_HPFS()\n");
log_partition(disk_car,partition);
}
+ free(buffer);
return 1;
}
set_HPFS_info(partition);
+ free(buffer);
return 0;
}
-
-