From 1d00c56872611ae9eb66c45052132d817023da91 Mon Sep 17 00:00:00 2001 From: SashaXser <24498484+SashaXser@users.noreply.github.com> Date: Sun, 10 Sep 2023 14:53:00 +0400 Subject: [PATCH] Update goodbyedpi.c --- src/goodbyedpi.c | 129 ++++++++++++++--------------------------------- 1 file changed, 37 insertions(+), 92 deletions(-) diff --git a/src/goodbyedpi.c b/src/goodbyedpi.c index 9d1b2d9..0d53398 100644 --- a/src/goodbyedpi.c +++ b/src/goodbyedpi.c @@ -184,17 +184,12 @@ static void add_filter_str(int proto, int port) { size_t new_filter_size = strlen(filter_string) + (proto == IPPROTO_UDP ? strlen(udp) : strlen(tcp)) + 16; char *new_filter = malloc(new_filter_size); - if (proto == IPPROTO_UDP) { - snprintf(new_filter, new_filter_size, udp, port, port); - } else { - snprintf(new_filter, new_filter_size, tcp, port, port); - } + sprintf(new_filter, proto == IPPROTO_UDP ? udp : tcp, port, port); free(filter_string); filter_string = new_filter; } - static void add_ip_id_str(int id) { const char *ipid = " or ip.Id == %d"; char *addfilter = malloc(strlen(ipid) + 16); @@ -420,92 +415,42 @@ static const char *find_http_method_end(const char *pkt, unsigned int http_frag, const char *method_end = NULL; int fragmented = 0; - switch (*pkt) { - case 'G': - if (strncmp(pkt, "GET", 3) == 0) { - method_end = pkt + 3; - } - break; - case 'P': - if (strncmp(pkt, "POST", 4) == 0) { - method_end = pkt + 4; - } - break; - case 'H': - if (strncmp(pkt, "HEAD", 4) == 0) { - method_end = pkt + 4; - } - break; - case 'O': - if (strncmp(pkt, "OPTIONS", 7) == 0) { - method_end = pkt + 7; - } - break; - case 'D': - if (strncmp(pkt, "DELETE", 6) == 0) { - method_end = pkt + 6; - } - break; - case 'T': - if (strncmp(pkt, "TRACE", 5) == 0) { - method_end = pkt + 5; - } - break; - case 'C': - if (strncmp(pkt, "CONNECT", 7) == 0) { - method_end = pkt + 7; - } - break; - default: - break; - } - - if (method_end == NULL && (http_frag == 1 || http_frag == 2)) { - switch (*pkt) { - case 'E': - if (strncmp(pkt, "ET", http_frag) == 0) { - method_end = pkt + http_frag - 1; - fragmented = 1; - } - break; - case 'S': - if (strncmp(pkt, "ST", http_frag) == 0) { - method_end = pkt + http_frag - 1; - fragmented = 1; - } - break; - case 'A': - if (strncmp(pkt, "AD", http_frag) == 0) { - method_end = pkt + http_frag - 1; - fragmented = 1; - } - break; - case 'N': - if (strncmp(pkt, "NS", http_frag) == 0) { - method_end = pkt + http_frag - 1; - fragmented = 1; - } - break; - case 'L': - if (strncmp(pkt, "LE", http_frag) == 0) { - method_end = pkt + http_frag - 1; - fragmented = 1; - } - break; - case 'R': - if (strncmp(pkt, "RACE", http_frag + 1) == 0) { - method_end = pkt + http_frag - 1; - fragmented = 1; - } - break; - case 'O': - if (strncmp(pkt, "ONNECT", http_frag + 1) == 0) { - method_end = pkt + http_frag - 1; - fragmented = 1; - } - break; - default: - break; + if (strncmp(pkt, "GET", 3) == 0) { + method_end = pkt + 3; + } else if (strncmp(pkt, "POST", 4) == 0) { + method_end = pkt + 4; + } else if (strncmp(pkt, "HEAD", 4) == 0) { + method_end = pkt + 4; + } else if (strncmp(pkt, "OPTIONS", 7) == 0) { + method_end = pkt + 7; + } else if (strncmp(pkt, "DELETE", 6) == 0) { + method_end = pkt + 6; + } else if (strncmp(pkt, "TRACE", 5) == 0) { + method_end = pkt + 5; + } else if (strncmp(pkt, "CONNECT", 7) == 0) { + method_end = pkt + 7; + } else if ((http_frag == 1 || http_frag == 2)) { + if (strncmp(pkt, "ET", http_frag) == 0) { + method_end = pkt + http_frag - 1; + fragmented = 1; + } else if (strncmp(pkt, "ST", http_frag) == 0) { + method_end = pkt + http_frag - 1; + fragmented = 1; + } else if (strncmp(pkt, "AD", http_frag) == 0) { + method_end = pkt + http_frag - 1; + fragmented = 1; + } else if (strncmp(pkt, "NS", http_frag) == 0) { + method_end = pkt + http_frag - 1; + fragmented = 1; + } else if (strncmp(pkt, "LE", http_frag) == 0) { + method_end = pkt + http_frag - 1; + fragmented = 1; + } else if (strncmp(pkt, "RACE", http_frag + 1) == 0) { + method_end = pkt + http_frag - 1; + fragmented = 1; + } else if (strncmp(pkt, "ONNECT", http_frag + 1) == 0) { + method_end = pkt + http_frag - 1; + fragmented = 1; } }