aboutsummaryrefslogtreecommitdiff
path: root/src/lib/protocols/netbios.c
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2020-07-14 22:16:43 +0200
committerLuca Deri <deri@ntop.org>2020-07-14 22:16:43 +0200
commit91d132ea3dd99e10012916f1a1ededad2e0eefab (patch)
tree0ee5200d51fdb65bb2c5aa5f9a120965e5cff830 /src/lib/protocols/netbios.c
parent3fd31530894e07fb22ed8cf430f3e8cbbd2f0115 (diff)
Check for avoiding buffer overflow in netbios dissector
Diffstat (limited to 'src/lib/protocols/netbios.c')
-rw-r--r--src/lib/protocols/netbios.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/lib/protocols/netbios.c b/src/lib/protocols/netbios.c
index 66224557a..6ca691c7e 100644
--- a/src/lib/protocols/netbios.c
+++ b/src/lib/protocols/netbios.c
@@ -39,25 +39,25 @@ struct netbios_header {
/* The function below has been inherited by tcpdump */
int ndpi_netbios_name_interpret(char *in, size_t inlen, char *out, u_int out_len) {
- int ret = 0, len;
+ int ret = 0, len, idx = inlen;
char *b;
len = (*in++)/2;
b = out;
*out = 0;
- if(len > (out_len-1) || len < 1 || 2*len > inlen)
+ if((len > (out_len-1)) || (len < 1) || ((2*len) > inlen))
return(-1);
- while (len--) {
- if(in[0] < 'A' || in[0] > 'P' || in[1] < 'A' || in[1] > 'P') {
+ while(len--) {
+ if((idx < 2) || (in[0] < 'A') || (in[0] > 'P') || (in[1] < 'A') || (in[1] > 'P')) {
*out = 0;
break;
}
- *out = ((in[0]-'A')<<4) + (in[1]-'A');
+ *out = ((in[0] - 'A') << 4) + (in[1] - 'A');
- in += 2;
+ in += 2, idx -= 2;
if(isprint(*out))
out++, ret++;