summaryrefslogtreecommitdiffstats
path: root/contrib/tcpdump/print-smb.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/tcpdump/print-smb.c')
-rw-r--r--contrib/tcpdump/print-smb.c37
1 files changed, 21 insertions, 16 deletions
diff --git a/contrib/tcpdump/print-smb.c b/contrib/tcpdump/print-smb.c
index f5be9ff..723b9a0 100644
--- a/contrib/tcpdump/print-smb.c
+++ b/contrib/tcpdump/print-smb.c
@@ -6,16 +6,17 @@
* or later
*/
-#define NETDISSECT_REWORKED
+/* \summary: SMB/CIFS printer */
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
-#include <tcpdump-stdinc.h>
+#include <netdissect-stdinc.h>
#include <string.h>
-#include "interface.h"
+#include "netdissect.h"
#include "extract.h"
#include "smb.h"
@@ -100,7 +101,7 @@ trans2_findfirst(netdissect_options *ndo,
smb_fdata(ndo, param, fmt, param + pcnt, unicodestr);
if (dcnt) {
ND_PRINT((ndo, "data:\n"));
- print_data(ndo, data, dcnt);
+ smb_print_data(ndo, data, dcnt);
}
}
@@ -135,7 +136,7 @@ trans2_qfsinfo(netdissect_options *ndo,
}
if (dcnt) {
ND_PRINT((ndo, "data:\n"));
- print_data(ndo, data, dcnt);
+ smb_print_data(ndo, data, dcnt);
}
return;
trunc:
@@ -416,7 +417,7 @@ print_negprot(netdissect_options *ndo,
smb_fdata(ndo, words + 1, f1, min(words + 1 + wct * 2, maxbuf),
unicodestr);
else
- print_data(ndo, words + 1, min(wct * 2, PTR_DIFF(maxbuf, words + 1)));
+ smb_print_data(ndo, words + 1, min(wct * 2, PTR_DIFF(maxbuf, words + 1)));
ND_TCHECK2(*data, 2);
bcc = EXTRACT_LE_16BITS(data);
@@ -426,7 +427,7 @@ print_negprot(netdissect_options *ndo,
smb_fdata(ndo, data + 2, f2, min(data + 2 + EXTRACT_LE_16BITS(data),
maxbuf), unicodestr);
else
- print_data(ndo, data + 2, min(EXTRACT_LE_16BITS(data), PTR_DIFF(maxbuf, data + 2)));
+ smb_print_data(ndo, data + 2, min(EXTRACT_LE_16BITS(data), PTR_DIFF(maxbuf, data + 2)));
}
return;
trunc:
@@ -460,7 +461,7 @@ print_sesssetup(netdissect_options *ndo,
smb_fdata(ndo, words + 1, f1, min(words + 1 + wct * 2, maxbuf),
unicodestr);
else
- print_data(ndo, words + 1, min(wct * 2, PTR_DIFF(maxbuf, words + 1)));
+ smb_print_data(ndo, words + 1, min(wct * 2, PTR_DIFF(maxbuf, words + 1)));
ND_TCHECK2(*data, 2);
bcc = EXTRACT_LE_16BITS(data);
@@ -470,7 +471,7 @@ print_sesssetup(netdissect_options *ndo,
smb_fdata(ndo, data + 2, f2, min(data + 2 + EXTRACT_LE_16BITS(data),
maxbuf), unicodestr);
else
- print_data(ndo, data + 2, min(EXTRACT_LE_16BITS(data), PTR_DIFF(maxbuf, data + 2)));
+ smb_print_data(ndo, data + 2, min(EXTRACT_LE_16BITS(data), PTR_DIFF(maxbuf, data + 2)));
}
return;
trunc:
@@ -510,7 +511,7 @@ print_lockingandx(netdissect_options *ndo,
smb_fdata(ndo, data + 2, f2, min(data + 2 + EXTRACT_LE_16BITS(data),
maxbuf), unicodestr);
else
- print_data(ndo, data + 2, min(EXTRACT_LE_16BITS(data), PTR_DIFF(maxbuf, data + 2)));
+ smb_print_data(ndo, data + 2, min(EXTRACT_LE_16BITS(data), PTR_DIFF(maxbuf, data + 2)));
}
return;
trunc:
@@ -805,9 +806,6 @@ print_smb(netdissect_options *ndo,
ND_TCHECK(buf[9]);
request = (buf[9] & 0x80) ? 0 : 1;
- flags2 = EXTRACT_LE_16BITS(&buf[10]);
- unicodestr = flags2 & 0x8000;
- nterrcodes = flags2 & 0x4000;
startbuf = buf;
command = buf[4];
@@ -822,6 +820,11 @@ print_smb(netdissect_options *ndo,
if (ndo->ndo_vflag < 2)
return;
+ ND_TCHECK_16BITS(&buf[10]);
+ flags2 = EXTRACT_LE_16BITS(&buf[10]);
+ unicodestr = flags2 & 0x8000;
+ nterrcodes = flags2 & 0x4000;
+
/* print out the header */
smb_fdata(ndo, buf, fmt_smbheader, buf + 33, unicodestr);
@@ -883,7 +886,7 @@ print_smb(netdissect_options *ndo,
} else {
if (bcc > 0) {
ND_PRINT((ndo, "smb_buf[]=\n"));
- print_data(ndo, data + 2, min(bcc, PTR_DIFF(maxbuf, data + 2)));
+ smb_print_data(ndo, data + 2, min(bcc, PTR_DIFF(maxbuf, data + 2)));
}
}
}
@@ -1164,10 +1167,12 @@ nbt_udp137_print(netdissect_options *ndo,
p = smb_fdata(ndo, p, "Name=[n1]\n#", maxbuf, 0);
if (p == NULL)
goto out;
+ ND_TCHECK_16BITS(p);
restype = EXTRACT_16BITS(p);
p = smb_fdata(ndo, p, "ResType=[rw]\nResClass=[rw]\nTTL=[rD]\n", p + 8, 0);
if (p == NULL)
goto out;
+ ND_TCHECK_16BITS(p);
rdlen = EXTRACT_16BITS(p);
ND_PRINT((ndo, "ResourceLength=%d\nResourceData=\n", rdlen));
p += 2;
@@ -1209,7 +1214,7 @@ nbt_udp137_print(netdissect_options *ndo,
p += 2;
}
} else {
- print_data(ndo, p, min(rdlen, length - (p - data)));
+ smb_print_data(ndo, p, min(rdlen, length - (p - data)));
p += rdlen;
}
}
@@ -1309,7 +1314,7 @@ out:
/*
print netbeui frames
*/
-struct nbf_strings {
+static struct nbf_strings {
const char *name;
const char *nonverbose;
const char *verbose;
OpenPOWER on IntegriCloud