aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/ndpi_private.h21
-rw-r--r--src/lib/ndpi_main.c10
2 files changed, 15 insertions, 16 deletions
diff --git a/src/include/ndpi_private.h b/src/include/ndpi_private.h
index 0ec33498b..620ce2532 100644
--- a/src/include/ndpi_private.h
+++ b/src/include/ndpi_private.h
@@ -72,25 +72,16 @@ typedef struct default_ports_tree_node {
} default_ports_tree_node_t;
-#define LINE_EQUALS(ndpi_int_one_line_struct, string_to_compare) \
- ((ndpi_int_one_line_struct).len == strlen(string_to_compare) && \
- LINE_CMP(ndpi_int_one_line_struct, string_to_compare, strlen(string_to_compare)) == 1)
-
#define LINE_STARTS(ndpi_int_one_line_struct, string_to_compare) \
- ((ndpi_int_one_line_struct).len >= strlen(string_to_compare) && \
- LINE_CMP(ndpi_int_one_line_struct, string_to_compare, strlen(string_to_compare)) == 1)
+ ((ndpi_int_one_line_struct).ptr != NULL && \
+ (ndpi_int_one_line_struct).len >= strlen(string_to_compare) && \
+ strncasecmp((const char *)((ndpi_int_one_line_struct).ptr), string_to_compare, strlen(string_to_compare)) == 0)
#define LINE_ENDS(ndpi_int_one_line_struct, string_to_compare) \
((ndpi_int_one_line_struct).len >= strlen(string_to_compare) && \
- ndpi_strncasestr((const char *)((ndpi_int_one_line_struct).ptr) + \
- ((ndpi_int_one_line_struct).len - strlen(string_to_compare)), \
- string_to_compare, strlen(string_to_compare)) == \
- (const char *)((ndpi_int_one_line_struct).ptr) + ((ndpi_int_one_line_struct).len - strlen(string_to_compare)))
-
-#define LINE_CMP(ndpi_int_one_line_struct, string_to_compare, string_to_compare_length) \
- ((ndpi_int_one_line_struct).ptr != NULL && \
- ndpi_strncasestr((const char *)((ndpi_int_one_line_struct).ptr), string_to_compare, \
- string_to_compare_length) == (const char *)((ndpi_int_one_line_struct).ptr))
+ strncasecmp((const char *)((ndpi_int_one_line_struct).ptr) + \
+ ((ndpi_int_one_line_struct).len - strlen(string_to_compare)), \
+ string_to_compare, strlen(string_to_compare)) == 0)
#define NDPI_MAX_PARSE_LINES_PER_PACKET 64
diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c
index 0146f5b18..0cc57e19b 100644
--- a/src/lib/ndpi_main.c
+++ b/src/lib/ndpi_main.c
@@ -10533,10 +10533,18 @@ const char * ndpi_strncasestr(const char *s, const char *find, size_t len) {
const size_t s_len = strnlen(s, len);
+ /* If 'find' is longer than 's', no match is possible */
+ if (find_len > s_len) {
+ return NULL;
+ }
+
const char *const end_of_search = s + s_len - find_len + 1;
+ /* Cache the lowercased first character of 'find' */
+ const unsigned char fc = tolower((unsigned char) *find);
+
for (; s < end_of_search; ++s) {
- if (tolower((unsigned char)*s) == tolower((unsigned char)*find)) {
+ if (tolower((unsigned char)*s) == fc) {
if (strncasecmp(s + 1, find + 1, find_len - 1) == 0) {
return s;
}