aboutsummaryrefslogtreecommitdiff
path: root/src/lib/ndpi_analyze.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/ndpi_analyze.c')
-rw-r--r--src/lib/ndpi_analyze.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/lib/ndpi_analyze.c b/src/lib/ndpi_analyze.c
index 0fe749050..8ded55718 100644
--- a/src/lib/ndpi_analyze.c
+++ b/src/lib/ndpi_analyze.c
@@ -145,8 +145,8 @@ u_int32_t ndpi_data_last(struct ndpi_analyze_struct *s) {
}
/* Return min/max on all values */
-u_int32_t ndpi_data_min(struct ndpi_analyze_struct *s) { return(s->min_val); }
-u_int32_t ndpi_data_max(struct ndpi_analyze_struct *s) { return(s->max_val); }
+u_int32_t ndpi_data_min(struct ndpi_analyze_struct *s) { return(s ? s->min_val : 0); }
+u_int32_t ndpi_data_max(struct ndpi_analyze_struct *s) { return(s ? s->max_val : 0); }
/* ********************************************************************************* */
@@ -582,7 +582,7 @@ char* ndpi_print_bin(struct ndpi_bin *b, u_int8_t normalize_first, char *out_buf
u_int16_t i;
u_int len = 0;
- if(!b || !out_buf) return(out_buf); else out_buf[0] = '\0';
+ if(!b || !b->u.bins8 || !out_buf) return(out_buf); else out_buf[0] = '\0';
if(normalize_first)
ndpi_normalize_bin(b);
@@ -592,7 +592,7 @@ char* ndpi_print_bin(struct ndpi_bin *b, u_int8_t normalize_first, char *out_buf
for(i=0; i<b->num_bins; i++) {
int rc = ndpi_snprintf(&out_buf[len], out_buf_len-len, "%s%u", (i > 0) ? "," : "", b->u.bins8[i]);
- if(rc < 0) break;
+ if(rc < 0 || (u_int)rc >= out_buf_len-len) break;
len += rc;
}
break;
@@ -601,7 +601,7 @@ char* ndpi_print_bin(struct ndpi_bin *b, u_int8_t normalize_first, char *out_buf
for(i=0; i<b->num_bins; i++) {
int rc = ndpi_snprintf(&out_buf[len], out_buf_len-len, "%s%u", (i > 0) ? "," : "", b->u.bins16[i]);
- if(rc < 0) break;
+ if(rc < 0 || (u_int)rc >= out_buf_len-len) break;
len += rc;
}
break;
@@ -610,7 +610,7 @@ char* ndpi_print_bin(struct ndpi_bin *b, u_int8_t normalize_first, char *out_buf
for(i=0; i<b->num_bins; i++) {
int rc = ndpi_snprintf(&out_buf[len], out_buf_len-len, "%s%u", (i > 0) ? "," : "", b->u.bins32[i]);
- if(rc < 0) break;
+ if(rc < 0 || (u_int)rc >= out_buf_len-len) break;
len += rc;
}
break;
@@ -619,7 +619,7 @@ char* ndpi_print_bin(struct ndpi_bin *b, u_int8_t normalize_first, char *out_buf
for(i=0; i<b->num_bins; i++) {
int rc = ndpi_snprintf(&out_buf[len], out_buf_len-len, "%s%llu", (i > 0) ? "," : "", (unsigned long long)b->u.bins64[i]);
- if(rc < 0) break;
+ if(rc < 0 || (u_int)rc >= out_buf_len-len) break;
len += rc;
}
break;
@@ -655,7 +655,10 @@ float ndpi_bin_similarity(struct ndpi_bin *b1, struct ndpi_bin *b2,
u_int8_t normalize_first, float similarity_max_threshold) {
u_int16_t i;
float threshold = similarity_max_threshold*similarity_max_threshold;
-
+
+ if(!b1 || !b2)
+ return(-1);
+
if(
// (b1->family != b2->family) ||
(b1->num_bins != b2->num_bins))