aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2020-05-31 18:50:25 +0200
committerLuca Deri <deri@ntop.org>2020-05-31 18:50:25 +0200
commitdc5b4cbde0b7988ae562cbe2c36f5286554b3a61 (patch)
tree6a6e46662b7cf2bf4e87352e1128ef7a5a15a755 /src
parentb0bf66c436b829155662c27f59ab09dc6e9e7f3d (diff)
Reworked ndpi_strncasestr
Diffstat (limited to 'src')
-rw-r--r--src/include/ndpi_api.h.in2
-rw-r--r--src/lib/ndpi_main.c32
2 files changed, 14 insertions, 20 deletions
diff --git a/src/include/ndpi_api.h.in b/src/include/ndpi_api.h.in
index e0dc36e94..40e716e95 100644
--- a/src/include/ndpi_api.h.in
+++ b/src/include/ndpi_api.h.in
@@ -137,7 +137,7 @@ extern "C" {
* NULL if the substring is not found
*
*/
- char* ndpi_strncasestr(const char *s, const char *find, size_t slen);
+ const char* ndpi_strncasestr(const char *s, const char *find, size_t slen);
/**
* Returns the nDPI protocol id for IP-based protocol detection
diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c
index 65600b74f..3cc554481 100644
--- a/src/lib/ndpi_main.c
+++ b/src/lib/ndpi_main.c
@@ -5906,27 +5906,21 @@ char *ndpi_strnstr(const char *s, const char *find, size_t slen) {
/*
* Same as ndpi_strnstr but case-insensitive
*/
-char *ndpi_strncasestr(const char *s, const char *find, size_t slen) {
- char c;
- size_t len;
+const char * ndpi_strncasestr(const char *str1, const char *str2, size_t len) {
+ size_t str1_len = strnlen(str1, len);
+ size_t str2_len = strlen(str2);
+ size_t i;
- if((c = *find++) != '\0') {
- len = strlen(find);
- do {
- char sc;
-
- do {
- if(slen-- < 1 || (sc = *s++) == '\0')
- return(NULL);
- } while (sc != c);
-
- if(len > slen)
- return(NULL);
- } while (strncasecmp(s, find, len) != 0);
-
- s--;
+ for(i = 0; i < (str1_len - str2_len + 1); i++){
+ if(str1[0] == '\0')
+ return NULL;
+ else if(strncasecmp(str1, str2, str2_len) == 0)
+ return(str1);
+
+ str1++;
}
- return((char *) s);
+
+ return NULL;
}
/* ****************************************************** */