Skip to content

Commit 5792697

Browse files
author
Alexander Senier
committed
Add reproducer for issue 74
1 parent 65a1bb6 commit 5792697

File tree

2 files changed

+41
-14
lines changed

2 files changed

+41
-14
lines changed

examples/Makefile

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,17 @@ VPATH += src $(FREERTOS_PLUS_TCP_PATH) $(FREERTOS_PLUS_TCP_PATH)/portable/Buffer
88
DUMMY := $(shell mkdir -p obj)
99
VERBOSE ?= @
1010

11-
VULNS = vuln_75
11+
VULNS = vuln_75 vuln_74
1212

13-
all: $(addprefix obj/,$(VULNS))
14-
$(VERBOSE)for t in $<; do echo "Running $$t"; ./$$t; done
13+
all: $(addprefix obj/,$(addsuffix .run,$(sort $(VULNS))))
1514

16-
obj/vuln_75: \
15+
FREERTOS_CFLAGS = \
16+
-Iinclude/FreeRTOS-10.0.1 \
17+
-I$(FREERTOS_PLUS_TCP_PATH) \
18+
-I$(FREERTOS_PLUS_TCP_PATH)/include \
19+
-I$(FREERTOS_PLUS_TCP_PATH)/portable/Compiler/GCC \
20+
21+
obj/freertos.a: \
1722
obj/FreeRTOS_ARP.o \
1823
obj/FreeRTOS_DHCP.o \
1924
obj/FreeRTOS_IP.o \
@@ -23,16 +28,17 @@ obj/vuln_75: \
2328
obj/freertos_10_0_1_helper.o \
2429
obj/list.o \
2530
obj/port.o \
26-
obj/queue.o \
27-
obj/vuln_75.o
28-
obj/vuln_75: \
29-
CFLAGS += \
30-
-Iinclude/FreeRTOS-10.0.1 \
31-
-I$(FREERTOS_PLUS_TCP_PATH) \
32-
-I$(FREERTOS_PLUS_TCP_PATH)/include \
33-
-I$(FREERTOS_PLUS_TCP_PATH)/portable/Compiler/GCC \
34-
$(COMMON_CFLAGS)
35-
obj/vuln_75:
31+
obj/queue.o
32+
$(VERBOSE)$(AR) -crs $@ $^
33+
$(VERBOSE)rm $^
34+
35+
obj/%.run: obj/%
36+
$(VERBOSE)echo -n "Running $*"
37+
$(VERBOSE)./$< 2> $@.tmp && { echo "ERROR"; exit 1; } || echo "SUCCESS"
38+
$(VERBOSE)mv $@.tmp $@
39+
40+
obj/%: CFLAGS += $(FREERTOS_CFLAGS) $(COMMON_CFLAGS)
41+
obj/%: obj/freertos.a obj/%.o
3642
$(VERBOSE)$(CC) $(LDFLAGS) -o $@ -Wl,--start-group $^ -Wl,--end-group
3743

3844
obj/%.o: %.c

examples/src/vuln_74.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#include "FreeRTOS.h"
2+
#include "list.h"
3+
#include "task.h"
4+
#include "FreeRTOS_IP.h"
5+
#include "FreeRTOS_IP_Private.h"
6+
#include "FreeRTOS_ARP.h"
7+
8+
char data[] =
9+
// Ethernet header
10+
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
11+
// IP header
12+
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
13+
// ARP header
14+
"\0\0" // hardware address space
15+
;
16+
17+
int main()
18+
{
19+
eFrameProcessingResult_t result = eARPProcessPacket ((ARPPacket_t *)data);
20+
}
21+

0 commit comments

Comments
 (0)