diff options
-rw-r--r-- | src/lib/ndpi_domains.c | 2 | ||||
-rw-r--r-- | src/lib/ndpi_utils.c | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/lib/ndpi_domains.c b/src/lib/ndpi_domains.c index 05153d577..f4398b1c8 100644 --- a/src/lib/ndpi_domains.c +++ b/src/lib/ndpi_domains.c @@ -148,7 +148,7 @@ const char* ndpi_get_host_domain(struct ndpi_detection_module_struct *ndpi_str, dot = strstr(hostname, ret); - if(dot == NULL) + if(dot == NULL || dot == hostname) return(hostname); dot--; diff --git a/src/lib/ndpi_utils.c b/src/lib/ndpi_utils.c index 3314cbea2..a9f8d0a7c 100644 --- a/src/lib/ndpi_utils.c +++ b/src/lib/ndpi_utils.c @@ -2320,7 +2320,7 @@ int ndpi_hash_find_entry(ndpi_str_hash *h, char *key, u_int key_len, u_int16_t * int ndpi_hash_add_entry(ndpi_str_hash **h, char *key, u_int8_t key_len, u_int16_t value) { ndpi_str_hash_priv *h_priv = (ndpi_str_hash_priv *)*h; - ndpi_str_hash_priv *item; + ndpi_str_hash_priv *item, *ret_found; if(!key || key_len == 0) return(3); @@ -2350,6 +2350,13 @@ int ndpi_hash_add_entry(ndpi_str_hash **h, char *key, u_int8_t key_len, u_int16_ HASH_ADD(hh, *((ndpi_str_hash_priv **)h), key[0], key_len, item); + HASH_FIND(hh, *((ndpi_str_hash_priv **)h), key, key_len, ret_found); + if(ret_found == NULL) { /* The insertion failed (because of a memory allocation error) */ + ndpi_free(item->key); + ndpi_free(item); + return 4; + } + return 0; } |