mirror of
https://codeberg.org/la-chouette/minishell.git
synced 2025-12-06 07:28:09 +01:00
fuzz: add hand tester
This commit is contained in:
parent
f0d7dcc752
commit
3a88cbbad4
3 changed files with 54 additions and 1 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -36,5 +36,6 @@ compile_commands.json
|
||||||
report.txt
|
report.txt
|
||||||
zms_testeur
|
zms_testeur
|
||||||
fuzz
|
fuzz
|
||||||
|
fuzz_hand_tester
|
||||||
*CORPUS
|
*CORPUS
|
||||||
crash-*
|
crash-*
|
||||||
|
|
|
||||||
6
Makefile
6
Makefile
|
|
@ -4,7 +4,7 @@ DEBUG = -g -O1
|
||||||
# -fno-omit-frame-pointer is to prevent malloc stacktraces from being truncated,
|
# -fno-omit-frame-pointer is to prevent malloc stacktraces from being truncated,
|
||||||
# see "My malloc stacktraces are too short" here:
|
# see "My malloc stacktraces are too short" here:
|
||||||
# https://github.com/google/sanitizers/wiki/AddressSanitizer
|
# https://github.com/google/sanitizers/wiki/AddressSanitizer
|
||||||
ASAN = -fsanitize=address -fno-omit-frame-pointer
|
ASAN = -fsanitize=address,undefined -fno-omit-frame-pointer
|
||||||
TSAN = -fsanitize=thread
|
TSAN = -fsanitize=thread
|
||||||
UBSAN = -fsanitize=undefined
|
UBSAN = -fsanitize=undefined
|
||||||
LDLIBS = \
|
LDLIBS = \
|
||||||
|
|
@ -137,6 +137,10 @@ $(FUZZ): CFLAGS += -fsanitize=fuzzer,address,undefined
|
||||||
$(FUZZ): $(fuzz_objs) $(LIBFT)
|
$(FUZZ): $(fuzz_objs) $(LIBFT)
|
||||||
$(CC) $(CFLAGS) -o $@ $(fuzz_objs) $(LINCLUDE) $(LDLIBS)
|
$(CC) $(CFLAGS) -o $@ $(fuzz_objs) $(LINCLUDE) $(LDLIBS)
|
||||||
|
|
||||||
|
#fuzz_hand_tester: CFLAGS += $(ASAN)
|
||||||
|
fuzz_hand_tester: $(objs) src/fuzz_hand_tester.o $(LIBFT)
|
||||||
|
$(CC) $(CFLAGS) -o $@ src/fuzz_hand_tester.o $(objs) $(LINCLUDE) $(LDLIBS)
|
||||||
|
|
||||||
$(LIBFT): CFLAGS+=-DBUFFER_SIZE=1
|
$(LIBFT): CFLAGS+=-DBUFFER_SIZE=1
|
||||||
$(LIBFT):
|
$(LIBFT):
|
||||||
+$(MAKE) -C $(LIBFTDIR)
|
+$(MAKE) -C $(LIBFTDIR)
|
||||||
|
|
|
||||||
48
src/fuzz_hand_tester.c
Normal file
48
src/fuzz_hand_tester.c
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* fuzz_hand_tester.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2025/04/30 17:30:53 by kcolin #+# #+# */
|
||||||
|
/* Updated: 2025/04/30 17:36:33 by kcolin ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "fcntl.h"
|
||||||
|
#include "minishell.h"
|
||||||
|
#include "parser/cmd/cmd_destroy.h"
|
||||||
|
#include "parser/cmd_parsing.h"
|
||||||
|
#include "unistd.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
t_minishell app;
|
||||||
|
bzero(&app, sizeof(t_minishell));
|
||||||
|
int null = open("/dev/null", O_RDONLY, 0);
|
||||||
|
|
||||||
|
if (argc != 2)
|
||||||
|
return (1);
|
||||||
|
FILE *in = fopen(argv[1], "rb");
|
||||||
|
fseek(in, 0, SEEK_END);
|
||||||
|
long fsize = ftell(in);
|
||||||
|
fseek(in, 0, SEEK_SET); /* same as rewind(f); */
|
||||||
|
char *line = malloc(fsize + 1);
|
||||||
|
fread(line, fsize, 1, in);
|
||||||
|
fclose(in);
|
||||||
|
line[fsize] = 0;
|
||||||
|
|
||||||
|
|
||||||
|
dup2(null, STDIN_FILENO);
|
||||||
|
close(null);
|
||||||
|
t_cmd *cmd = minishell_parse(&app, line);
|
||||||
|
|
||||||
|
cmd_destroy(cmd);
|
||||||
|
free(line);
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue