X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/b466dcdfe6fc9b962122fa5e7a94ffd721065599..40e7f314ac41d4c6dc542ebb577cfd063df35e19:/print-bootp.c diff --git a/print-bootp.c b/print-bootp.c index b4864007..d1534c7a 100644 --- a/print-bootp.c +++ b/print-bootp.c @@ -21,8 +21,8 @@ * Format and print bootp packets. */ #ifndef lint -static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/print-bootp.c,v 1.72 2003-04-28 07:43:03 hannes Exp $ (LBL)"; +static const char rcsid[] _U_ = + "@(#) $Header: /tcpdump/master/tcpdump/print-bootp.c,v 1.79 2005-04-20 10:30:52 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -45,11 +45,22 @@ static void cmu_print(const u_char *); static char tstr[] = " [|bootp]"; +static const struct tok bootp_flag_values[] = { + { 0x8000, "Broadcast" }, + { 0, NULL} +}; + +static const struct tok bootp_op_values[] = { + { BOOTPREQUEST, "Request" }, + { BOOTPREPLY, "Reply" }, + { 0, NULL} +}; + /* * Print bootp requests */ void -bootp_print(register const u_char *cp, u_short sport, u_short dport, u_int length) +bootp_print(register const u_char *cp, u_int length) { register const struct bootp *bp; static const u_char vm_cmu[4] = VM_CMU; @@ -130,7 +141,7 @@ bootp_print(register const u_char *cp, u_short sport, u_short dport, u_int lengt } putchar('"'); } - TCHECK2(bp->bp_sname[0], 1); /* check first char only */ + TCHECK2(bp->bp_file[0], 1); /* check first char only */ if (*bp->bp_file) { printf("\n\t file \""); if (fn_print(bp->bp_file, snapend)) { @@ -545,6 +556,11 @@ rfc1048_print(register const u_char *bp) break; case TAG_CLIENT_FQDN: + /* option 81 should be at least 4 bytes long */ + if (len < 4) { + printf("ERROR: options 81 len %u < 4 bytes", len); + break; + } if (*bp++) printf("[svrreg]"); if (*bp)