aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/ndpi_domains.c2
-rw-r--r--src/lib/ndpi_utils.c9
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;
}