From 1e88b4f94860624b8720159370993092a98b0b26 Mon Sep 17 00:00:00 2001 From: Catena cyber <35799796+catenacyber@users.noreply.github.com> Date: Wed, 24 Apr 2019 18:16:10 +0200 Subject: Custom patch for libpcap to avoid infinite loop (#2344) --- projects/libpcap/Dockerfile | 2 ++ projects/libpcap/build.sh | 1 + projects/libpcap/patch.diff | 24 ++++++++++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 projects/libpcap/patch.diff diff --git a/projects/libpcap/Dockerfile b/projects/libpcap/Dockerfile index 91d870e7..f7acf86e 100644 --- a/projects/libpcap/Dockerfile +++ b/projects/libpcap/Dockerfile @@ -22,3 +22,5 @@ RUN git clone --depth 1 https://github.com/the-tcpdump-group/libpcap.git libpcap RUN git clone --depth=1 https://github.com/the-tcpdump-group/tcpdump.git tcpdump WORKDIR $SRC COPY build.sh $SRC/ +COPY patch.diff $SRC/ + diff --git a/projects/libpcap/build.sh b/projects/libpcap/build.sh index 97cf4aa5..106db2b7 100755 --- a/projects/libpcap/build.sh +++ b/projects/libpcap/build.sh @@ -17,6 +17,7 @@ cd libpcap # build project +git apply ../patch.diff mkdir build cd build cmake .. diff --git a/projects/libpcap/patch.diff b/projects/libpcap/patch.diff new file mode 100644 index 00000000..c76b3393 --- /dev/null +++ b/projects/libpcap/patch.diff @@ -0,0 +1,24 @@ +diff --git a/optimize.c b/optimize.c +index 4afd063f..90e8c571 100644 +--- a/optimize.c ++++ b/optimize.c +@@ -1888,7 +1888,7 @@ opt_root(struct block **b) + static void + opt_loop(opt_state_t *opt_state, struct icode *ic, int do_stmts) + { +- ++ int loopCounter = 0; + #ifdef BDEBUG + if (pcap_optimizer_debug > 1 || pcap_print_dot_graph) { + printf("opt_loop(root, %d) begin\n", do_stmts); +@@ -1909,6 +1909,10 @@ opt_loop(opt_state_t *opt_state, struct icode *ic, int do_stmts) + opt_dump(opt_state, ic); + } + #endif ++ loopCounter++; ++ if (loopCounter > 1000) { ++ break; ++ } + } while (!opt_state->done); + } + -- cgit v1.2.3