aboutsummaryrefslogtreecommitdiff
path: root/programs/fuzz
diff options
context:
space:
mode:
authorGilles Peskine <Gilles.Peskine@arm.com>2023-05-12 13:18:08 +0200
committerGilles Peskine <Gilles.Peskine@arm.com>2023-05-12 13:18:08 +0200
commit1f9d8a43c216b2297db60184cd9ed63944942e07 (patch)
tree6278855e9e3c0c62102b2a6f25030af3efc408b6 /programs/fuzz
parent501fb3abf39aa1b6cfb75c6a1330b13d1978e363 (diff)
downloadmbedtls-1f9d8a43c216b2297db60184cd9ed63944942e07.zip
mbedtls-1f9d8a43c216b2297db60184cd9ed63944942e07.tar.gz
mbedtls-1f9d8a43c216b2297db60184cd9ed63944942e07.tar.bz2
Fuzz programs: print an error if loading the reproducer fails
The fuzz programs were returning a nonzero status if they failed to load the reproducer, but that's discreet and not informative. Make them also print an error message. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
Diffstat (limited to 'programs/fuzz')
-rw-r--r--programs/fuzz/onefile.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/programs/fuzz/onefile.c b/programs/fuzz/onefile.c
index 4f80cdc..3b2709f 100644
--- a/programs/fuzz/onefile.c
+++ b/programs/fuzz/onefile.c
@@ -14,34 +14,48 @@ int main(int argc, char **argv)
FILE *fp;
uint8_t *Data;
size_t Size;
+ const char *argv0 = argv[0] == NULL ? "PROGRAM_NAME" : argv[0];
if (argc != 2) {
+ fprintf(stderr, "Usage: %s REPRODUCER_FILE\n", argv0);
return 1;
}
//opens the file, get its size, and reads it into a buffer
fp = fopen(argv[1], "rb");
if (fp == NULL) {
+ fprintf(stderr, "%s: Error in fopen\n", argv0);
+ perror(argv[1]);
return 2;
}
if (fseek(fp, 0L, SEEK_END) != 0) {
+ fprintf(stderr, "%s: Error in fseek(SEEK_END)\n", argv0);
+ perror(argv[1]);
fclose(fp);
return 2;
}
Size = ftell(fp);
if (Size == (size_t) -1) {
+ fprintf(stderr, "%s: Error in ftell\n", argv0);
+ perror(argv[1]);
fclose(fp);
return 2;
}
if (fseek(fp, 0L, SEEK_SET) != 0) {
+ fprintf(stderr, "%s: Error in fseek(0)\n", argv0);
+ perror(argv[1]);
fclose(fp);
return 2;
}
Data = malloc(Size);
if (Data == NULL) {
+ fprintf(stderr, "%s: Could not allocate memory\n", argv0);
+ perror(argv[1]);
fclose(fp);
return 2;
}
if (fread(Data, Size, 1, fp) != 1) {
+ fprintf(stderr, "%s: Error in fread\n", argv0);
+ perror(argv[1]);
free(Data);
fclose(fp);
return 2;