aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIvan Nardi <12729895+IvanNardi@users.noreply.github.com>2021-03-08 21:14:01 +0100
committerGitHub <noreply@github.com>2021-03-08 21:14:01 +0100
commitc3490e80a743146b35274dfb92abe5e075e00d01 (patch)
treecbba6ee7003d328fe43691f7ad01792310780968 /src
parentc50a8d4808bbe3f41cbe5e681e84a1eb52129cb1 (diff)
Fix some stack-use-after-return errors in automa code (#1150)
Diffstat (limited to 'src')
-rw-r--r--src/lib/ndpi_main.c39
1 files changed, 30 insertions, 9 deletions
diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c
index a9c3c9665..44f0387bf 100644
--- a/src/lib/ndpi_main.c
+++ b/src/lib/ndpi_main.c
@@ -2533,16 +2533,19 @@ void ndpi_exit_detection_module(struct ndpi_detection_module_struct *ndpi_str) {
ac_automata_release((AC_AUTOMATA_t *) ndpi_str->impossible_bigrams_automa.ac_automa, 0);
if(ndpi_str->risky_domain_automa.ac_automa != NULL)
- ac_automata_release((AC_AUTOMATA_t *) ndpi_str->risky_domain_automa.ac_automa, 0);
+ ac_automata_release((AC_AUTOMATA_t *) ndpi_str->risky_domain_automa.ac_automa,
+ 1 /* free patterns strings memory */);
if(ndpi_str->tls_cert_subject_automa.ac_automa != NULL)
ac_automata_release((AC_AUTOMATA_t *) ndpi_str->tls_cert_subject_automa.ac_automa, 0);
if(ndpi_str->malicious_ja3_automa.ac_automa != NULL)
- ac_automata_release((AC_AUTOMATA_t *) ndpi_str->malicious_ja3_automa.ac_automa, 0);
+ ac_automata_release((AC_AUTOMATA_t *) ndpi_str->malicious_ja3_automa.ac_automa,
+ 1 /* free patterns strings memory */);
if(ndpi_str->malicious_sha1_automa.ac_automa != NULL)
- ac_automata_release((AC_AUTOMATA_t *) ndpi_str->malicious_sha1_automa.ac_automa, 0);
+ ac_automata_release((AC_AUTOMATA_t *) ndpi_str->malicious_sha1_automa.ac_automa,
+ 1 /* free patterns strings memory */);
if(ndpi_str->custom_categories.hostnames.ac_automa != NULL)
ac_automata_release((AC_AUTOMATA_t *) ndpi_str->custom_categories.hostnames.ac_automa,
@@ -2929,13 +2932,19 @@ static int ndpi_load_risky_domain(struct ndpi_detection_module_struct *ndpi_str,
ndpi_str->risky_domain_automa.ac_automa = ac_automata_init(ac_match_handler);
if(ndpi_str->risky_domain_automa.ac_automa) {
- char buf[64];
+ char buf[64], *str;
u_int i, len;
snprintf(buf, sizeof(buf)-1, "%s$", domain_name);
for(i = 0, len = strlen(buf)-1 /* Skip $ */; i < len; i++) buf[i] = tolower(buf[i]);
- return(ndpi_add_string_to_automa(ndpi_str->risky_domain_automa.ac_automa, buf));
+ str = ndpi_strdup(buf);
+ if (str == NULL) {
+ NDPI_LOG_ERR(ndpi_str, "Memory allocation failure\n");
+ return -1;
+ };
+
+ return(ndpi_add_string_to_automa(ndpi_str->risky_domain_automa.ac_automa, str));
}
return(-1);
@@ -2997,7 +3006,7 @@ int ndpi_load_risk_domain_file(struct ndpi_detection_module_struct *ndpi_str, co
*
*/
int ndpi_load_malicious_ja3_file(struct ndpi_detection_module_struct *ndpi_str, const char *path) {
- char buffer[128], *line;
+ char buffer[128], *line, *str;
FILE *fd;
int len, num = 0;
@@ -3029,7 +3038,13 @@ int ndpi_load_malicious_ja3_file(struct ndpi_detection_module_struct *ndpi_str,
if((comma = strchr(line, ',')) != NULL)
comma[0] = '\0';
- if(ndpi_add_string_to_automa(ndpi_str->malicious_ja3_automa.ac_automa, line) >= 0)
+ str = ndpi_strdup(line);
+ if (str == NULL) {
+ NDPI_LOG_ERR(ndpi_str, "Memory allocation failure\n");
+ return -1;
+ };
+
+ if(ndpi_add_string_to_automa(ndpi_str->malicious_ja3_automa.ac_automa, str) >= 0)
num++;
}
@@ -3051,7 +3066,7 @@ int ndpi_load_malicious_ja3_file(struct ndpi_detection_module_struct *ndpi_str,
int ndpi_load_malicious_sha1_file(struct ndpi_detection_module_struct *ndpi_str, const char *path)
{
char buffer[128];
- char *first_comma, *second_comma;
+ char *first_comma, *second_comma, *str;
FILE *fd;
size_t len;
int num = 0;
@@ -3090,7 +3105,13 @@ int ndpi_load_malicious_sha1_file(struct ndpi_detection_module_struct *ndpi_str,
for (size_t i = 0; i < 40; ++i)
first_comma[i] = toupper(first_comma[i]);
- if (ndpi_add_string_to_automa(ndpi_str->malicious_sha1_automa.ac_automa, first_comma) >= 0)
+ str = ndpi_strdup(first_comma);
+ if (str == NULL) {
+ NDPI_LOG_ERR(ndpi_str, "Memory allocation failure\n");
+ return -1;
+ };
+
+ if (ndpi_add_string_to_automa(ndpi_str->malicious_sha1_automa.ac_automa, str) >= 0)
num++;
}