Description: Fix opt82 handling
Print option 82 content in a usable way
.
Author: Boian Bonev <bbonev@ipacct.com>
Origin: other
Forwarded: by-email
Last-Update: 2013-10-04
--- a/dhcpdump.c
+++ b/dhcpdump.c
@@ -526,18 +526,17 @@ int printdata(u_char *data, int data_len
break;
case 82: // Relay Agent Information
- printf("\n");
- for (i = j + 2; i < j + data[j + 1]; ) {
- printf("%-17s %-13s ", " ",
+ for (i = j + 2; i < j + data[j + 1] + 2; ) {
+ printf("\n%-17s %-13s ", " ",
data[i] > sizeof(relayagent_suboptions) ?
"*wrong value*" :
relayagent_suboptions[data[i]]);
- if (i + data[i + 1] > j + data[j + 1]) {
+ if (i + data[i + 1] + 2 > j + data[j + 1] + 2) {
printf("*MALFORMED -- TOO LARGE*\n");
break;
}
printHexColon(data + i + 2, data[i + 1]);
- i += data[i + 1];
+ i += data[i + 1] + 2;
}
break;