Upgrade to tcpdump 4.9.2.

From CHANGES:

  Sunday September 3, 2017 denis@ovsienko.info
  Summary for 4.9.2 tcpdump release
    Do not use getprotobynumber() for protocol name resolution.  Do not do
      any protocol name resolution if -n is specified.
    Improve errors detection in the test scripts.
    Fix a segfault with OpenSSL 1.1 and improve OpenSSL usage.
    Clean up IS-IS printing.
    Fix buffer overflow vulnerabilities:
      CVE-2017-11543 (SLIP)
      CVE-2017-13011 (bittok2str_internal)
    Fix infinite loop vulnerabilities:
      CVE-2017-12989 (RESP)
      CVE-2017-12990 (ISAKMP)
      CVE-2017-12995 (DNS)
      CVE-2017-12997 (LLDP)
    Fix buffer over-read vulnerabilities:
      CVE-2017-11541 (safeputs)
      CVE-2017-11542 (PIMv1)
      CVE-2017-12893 (SMB/CIFS)
      CVE-2017-12894 (lookup_bytestring)
      CVE-2017-12895 (ICMP)
      CVE-2017-12896 (ISAKMP)
      CVE-2017-12897 (ISO CLNS)
      CVE-2017-12898 (NFS)
      CVE-2017-12899 (DECnet)
      CVE-2017-12900 (tok2strbuf)
      CVE-2017-12901 (EIGRP)
      CVE-2017-12902 (Zephyr)
      CVE-2017-12985 (IPv6)
      CVE-2017-12986 (IPv6 routing headers)
      CVE-2017-12987 (IEEE 802.11)
      CVE-2017-12988 (telnet)
      CVE-2017-12991 (BGP)
      CVE-2017-12992 (RIPng)
      CVE-2017-12993 (Juniper)
      CVE-2017-11542 (PIMv1)
      CVE-2017-11541 (safeputs)
      CVE-2017-12994 (BGP)
      CVE-2017-12996 (PIMv2)
      CVE-2017-12998 (ISO IS-IS)
      CVE-2017-12999 (ISO IS-IS)
      CVE-2017-13000 (IEEE 802.15.4)
      CVE-2017-13001 (NFS)
      CVE-2017-13002 (AODV)
      CVE-2017-13003 (LMP)
      CVE-2017-13004 (Juniper)
      CVE-2017-13005 (NFS)
      CVE-2017-13006 (L2TP)
      CVE-2017-13007 (Apple PKTAP)
      CVE-2017-13008 (IEEE 802.11)
      CVE-2017-13009 (IPv6 mobility)
      CVE-2017-13010 (BEEP)
      CVE-2017-13012 (ICMP)
      CVE-2017-13013 (ARP)
      CVE-2017-13014 (White Board)
      CVE-2017-13015 (EAP)
      CVE-2017-11543 (SLIP)
      CVE-2017-13016 (ISO ES-IS)
      CVE-2017-13017 (DHCPv6)
      CVE-2017-13018 (PGM)
      CVE-2017-13019 (PGM)
      CVE-2017-13020 (VTP)
      CVE-2017-13021 (ICMPv6)
      CVE-2017-13022 (IP)
      CVE-2017-13023 (IPv6 mobility)
      CVE-2017-13024 (IPv6 mobility)
      CVE-2017-13025 (IPv6 mobility)
      CVE-2017-13026 (ISO IS-IS)
      CVE-2017-13027 (LLDP)
      CVE-2017-13028 (BOOTP)
      CVE-2017-13029 (PPP)
      CVE-2017-13030 (PIM)
      CVE-2017-13031 (IPv6 fragmentation header)
      CVE-2017-13032 (RADIUS)
      CVE-2017-13033 (VTP)
      CVE-2017-13034 (PGM)
      CVE-2017-13035 (ISO IS-IS)
      CVE-2017-13036 (OSPFv3)
      CVE-2017-13037 (IP)
      CVE-2017-13038 (PPP)
      CVE-2017-13039 (ISAKMP)
      CVE-2017-13040 (MPTCP)
      CVE-2017-13041 (ICMPv6)
      CVE-2017-13042 (HNCP)
      CVE-2017-13043 (BGP)
      CVE-2017-13044 (HNCP)
      CVE-2017-13045 (VQP)
      CVE-2017-13046 (BGP)
      CVE-2017-13047 (ISO ES-IS)
      CVE-2017-13048 (RSVP)
      CVE-2017-13049 (Rx)
      CVE-2017-13050 (RPKI-Router)
      CVE-2017-13051 (RSVP)
      CVE-2017-13052 (CFM)
      CVE-2017-13053 (BGP)
      CVE-2017-13054 (LLDP)
      CVE-2017-13055 (ISO IS-IS)
      CVE-2017-13687 (Cisco HDLC)
      CVE-2017-13688 (OLSR)
      CVE-2017-13689 (IKEv1)
      CVE-2017-13690 (IKEv2)
      CVE-2017-13725 (IPv6 routing headers)

Bug: N/A
Test: ran manually
Change-Id: I6fbfa46046ee89d40d13024777e27623a23cb258
diff --git a/print-tftp.c b/print-tftp.c
index 69bc601..6600c9c 100644
--- a/print-tftp.c
+++ b/print-tftp.c
@@ -46,21 +46,6 @@
 #define	TFTP_ERROR	05			/* error code */
 #define OACK	06			/* option acknowledgement */
 
-struct	tftphdr {
-	unsigned short	th_opcode;		/* packet type */
-	union {
-		unsigned short	tu_block;	/* block # */
-		unsigned short	tu_code;	/* error code */
-		char	tu_stuff[1];	/* request packet stuff */
-	} th_u;
-	char	th_data[1];		/* data or error string */
-};
-
-#define	th_block	th_u.tu_block
-#define	th_code		th_u.tu_code
-#define	th_stuff	th_u.tu_stuff
-#define	th_msg		th_data
-
 /*
  * Error codes.
  */
@@ -106,80 +91,75 @@
 tftp_print(netdissect_options *ndo,
            register const u_char *bp, u_int length)
 {
-	register const struct tftphdr *tp;
 	register const char *cp;
-	register const u_char *p;
 	register int opcode;
 	u_int ui;
 
-	tp = (const struct tftphdr *)bp;
-
 	/* Print length */
 	ND_PRINT((ndo, " %d", length));
 
 	/* Print tftp request type */
 	if (length < 2)
 		goto trunc;
-	ND_TCHECK(tp->th_opcode);
-	opcode = EXTRACT_16BITS(&tp->th_opcode);
+	ND_TCHECK_16BITS(bp);
+	opcode = EXTRACT_16BITS(bp);
 	cp = tok2str(op2str, "tftp-#%d", opcode);
-	length -= 2;
 	ND_PRINT((ndo, " %s", cp));
 	/* Bail if bogus opcode */
 	if (*cp == 't')
 		return;
+	bp += 2;
+	length -= 2;
 
 	switch (opcode) {
 
 	case RRQ:
 	case WRQ:
-		p = (const u_char *)tp->th_stuff;
 		if (length == 0)
 			goto trunc;
 		ND_PRINT((ndo, " "));
 		/* Print filename */
 		ND_PRINT((ndo, "\""));
-		ui = fn_printztn(ndo, p, length, ndo->ndo_snapend);
+		ui = fn_printztn(ndo, bp, length, ndo->ndo_snapend);
 		ND_PRINT((ndo, "\""));
 		if (ui == 0)
 			goto trunc;
-		p += ui;
+		bp += ui;
 		length -= ui;
 
 		/* Print the mode - RRQ and WRQ only */
 		if (length == 0)
 			goto trunc;	/* no mode */
 		ND_PRINT((ndo, " "));
-		ui = fn_printztn(ndo, p, length, ndo->ndo_snapend);
+		ui = fn_printztn(ndo, bp, length, ndo->ndo_snapend);
 		if (ui == 0)
 			goto trunc;
-		p += ui;
+		bp += ui;
 		length -= ui;
 
 		/* Print options, if any */
 		while (length != 0) {
-			ND_TCHECK(*p);
-			if (*p != '\0')
+			ND_TCHECK(*bp);
+			if (*bp != '\0')
 				ND_PRINT((ndo, " "));
-			ui = fn_printztn(ndo, p, length, ndo->ndo_snapend);
+			ui = fn_printztn(ndo, bp, length, ndo->ndo_snapend);
 			if (ui == 0)
 				goto trunc;
-			p += ui;
+			bp += ui;
 			length -= ui;
 		}
 		break;
 
 	case OACK:
-		p = (const u_char *)tp->th_stuff;
 		/* Print options */
 		while (length != 0) {
-			ND_TCHECK(*p);
-			if (*p != '\0')
+			ND_TCHECK(*bp);
+			if (*bp != '\0')
 				ND_PRINT((ndo, " "));
-			ui = fn_printztn(ndo, p, length, ndo->ndo_snapend);
+			ui = fn_printztn(ndo, bp, length, ndo->ndo_snapend);
 			if (ui == 0)
 				goto trunc;
-			p += ui;
+			bp += ui;
 			length -= ui;
 		}
 		break;
@@ -188,23 +168,24 @@
 	case DATA:
 		if (length < 2)
 			goto trunc;	/* no block number */
-		ND_TCHECK(tp->th_block);
-		ND_PRINT((ndo, " block %d", EXTRACT_16BITS(&tp->th_block)));
+		ND_TCHECK_16BITS(bp);
+		ND_PRINT((ndo, " block %d", EXTRACT_16BITS(bp)));
 		break;
 
 	case TFTP_ERROR:
 		/* Print error code string */
 		if (length < 2)
 			goto trunc;	/* no error code */
-		ND_TCHECK(tp->th_code);
+		ND_TCHECK_16BITS(bp);
 		ND_PRINT((ndo, " %s", tok2str(err2str, "tftp-err-#%d \"",
-				       EXTRACT_16BITS(&tp->th_code))));
+				       EXTRACT_16BITS(bp))));
+		bp += 2;
 		length -= 2;
 		/* Print error message string */
 		if (length == 0)
 			goto trunc;	/* no error message */
 		ND_PRINT((ndo, " \""));
-		ui = fn_printztn(ndo, (const u_char *)tp->th_data, length, ndo->ndo_snapend);
+		ui = fn_printztn(ndo, bp, length, ndo->ndo_snapend);
 		ND_PRINT((ndo, "\""));
 		if (ui == 0)
 			goto trunc;