Merged update from upstream sources
This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/tcpdump.git#21376c7624050148cac9e697a4bfe551e4779f58
This commit is contained in:
parent
a26bffb67e
commit
3de4427105
2
.gitignore
vendored
2
.gitignore
vendored
@ -20,3 +20,5 @@ tcpdump-4.1.1.tar.gz
|
||||
/tcpdump-4.9.2.tar.gz
|
||||
/tcpdump-4.9.3.tar.gz
|
||||
/tcpdump-4.9.3.tar.gz.sig
|
||||
/tcpdump-4.99.0.tar.gz
|
||||
/tcpdump-4.99.0.tar.gz.sig
|
||||
|
@ -1,28 +1,26 @@
|
||||
From c48fba64fbbff9c75c79e32ab33aa65742c197d9 Mon Sep 17 00:00:00 2001
|
||||
From: rpm-build <rpm-build>
|
||||
Date: Mon, 20 Oct 2014 14:12:46 +0200
|
||||
Subject: [PATCH 2/8] Use getnameinfo instead of gethostbyaddr
|
||||
|
||||
---
|
||||
addrtoname.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 46 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/addrtoname.c b/addrtoname.c
|
||||
index 6975b71..949acb7 100644
|
||||
index 33b9378..426839c 100644
|
||||
--- a/addrtoname.c
|
||||
+++ b/addrtoname.c
|
||||
@@ -220,7 +220,6 @@ static uint32_t f_localnet;
|
||||
@@ -277,7 +277,6 @@ extern cap_channel_t *capdns;
|
||||
const char *
|
||||
getname(netdissect_options *ndo, const u_char *ap)
|
||||
ipaddr_string(netdissect_options *ndo, const u_char *ap)
|
||||
{
|
||||
- register struct hostent *hp;
|
||||
- struct hostent *hp;
|
||||
uint32_t addr;
|
||||
struct hnamemem *p;
|
||||
|
||||
@@ -242,6 +241,28 @@ getname(netdissect_options *ndo, const u_char *ap)
|
||||
@@ -299,13 +298,29 @@ ipaddr_string(netdissect_options *ndo, const u_char *ap)
|
||||
*/
|
||||
if (!ndo->ndo_nflag &&
|
||||
(addr & f_netmask) == f_localnet) {
|
||||
-#ifdef HAVE_CASPER
|
||||
- if (capdns != NULL) {
|
||||
- hp = cap_gethostbyaddr(capdns, (char *)&addr, 4,
|
||||
- AF_INET);
|
||||
- } else
|
||||
-#endif
|
||||
- hp = gethostbyaddr((char *)&addr, 4, AF_INET);
|
||||
+#ifdef HAVE_GETNAMEINFO
|
||||
+ struct sockaddr_in sa;
|
||||
+ char hbuf[NI_MAXHOST];
|
||||
@ -44,11 +42,12 @@ index 6975b71..949acb7 100644
|
||||
+ return p->name;
|
||||
+ }
|
||||
+#else
|
||||
+ register struct hostent *hp;
|
||||
hp = gethostbyaddr((char *)&addr, 4, AF_INET);
|
||||
+ struct hostent *hp;
|
||||
+ hp = gethostbyaddr((char *)&addr, 4, AF_INET);
|
||||
if (hp) {
|
||||
char *dotp;
|
||||
@@ -258,6 +279,7 @@ getname(netdissect_options *ndo, const u_char *ap)
|
||||
|
||||
@@ -321,6 +336,7 @@ ipaddr_string(netdissect_options *ndo, const u_char *ap)
|
||||
}
|
||||
return (p->name);
|
||||
}
|
||||
@ -56,18 +55,25 @@ index 6975b71..949acb7 100644
|
||||
}
|
||||
p->name = strdup(intoa(addr));
|
||||
if (p->name == NULL)
|
||||
@@ -272,7 +294,6 @@ getname(netdissect_options *ndo, const u_char *ap)
|
||||
@@ -336,7 +352,6 @@ ipaddr_string(netdissect_options *ndo, const u_char *ap)
|
||||
const char *
|
||||
getname6(netdissect_options *ndo, const u_char *ap)
|
||||
ip6addr_string(netdissect_options *ndo, const u_char *ap)
|
||||
{
|
||||
- register struct hostent *hp;
|
||||
- struct hostent *hp;
|
||||
union {
|
||||
struct in6_addr addr;
|
||||
nd_ipv6 addr;
|
||||
struct for_hash_addr {
|
||||
@@ -297,6 +318,28 @@ getname6(netdissect_options *ndo, const u_char *ap)
|
||||
@@ -361,13 +376,29 @@ ip6addr_string(netdissect_options *ndo, const u_char *ap)
|
||||
* Do not print names if -n was given.
|
||||
*/
|
||||
if (!ndo->ndo_nflag) {
|
||||
-#ifdef HAVE_CASPER
|
||||
- if (capdns != NULL) {
|
||||
- hp = cap_gethostbyaddr(capdns, (char *)&addr,
|
||||
- sizeof(addr), AF_INET6);
|
||||
- } else
|
||||
-#endif
|
||||
- hp = gethostbyaddr((char *)&addr, sizeof(addr),
|
||||
+#ifdef HAVE_GETNAMEINFO
|
||||
+ struct sockaddr_in6 sa;
|
||||
+ char hbuf[NI_MAXHOST];
|
||||
@ -89,11 +95,12 @@ index 6975b71..949acb7 100644
|
||||
+ return p->name;
|
||||
+ }
|
||||
+#else
|
||||
+ register struct hostent *hp;
|
||||
hp = gethostbyaddr((char *)&addr, sizeof(addr), AF_INET6);
|
||||
+ struct hostent *hp;
|
||||
+ hp = gethostbyaddr((char *)&addr, sizeof(addr),
|
||||
AF_INET6);
|
||||
if (hp) {
|
||||
char *dotp;
|
||||
@@ -313,6 +356,7 @@ getname6(netdissect_options *ndo, const u_char *ap)
|
||||
@@ -384,6 +415,7 @@ ip6addr_string(netdissect_options *ndo, const u_char *ap)
|
||||
}
|
||||
return (p->name);
|
||||
}
|
||||
@ -101,6 +108,3 @@ index 6975b71..949acb7 100644
|
||||
}
|
||||
cp = addrtostr6(ap, ntop_buf, sizeof(ntop_buf));
|
||||
p->name = strdup(cp);
|
||||
--
|
||||
2.9.3
|
||||
|
||||
|
@ -80,7 +80,7 @@ index 73bf138..29f7f87 100644
|
||||
@@ -1881,6 +1895,22 @@ main(int argc, char **argv)
|
||||
MakeFilename(dumpinfo.CurrentFileName, WFileName, 0, 0);
|
||||
|
||||
p = pcap_dump_open(pd, dumpinfo.CurrentFileName);
|
||||
pdd = pcap_dump_open(pd, dumpinfo.CurrentFileName);
|
||||
+
|
||||
+ /* Change ownership of file and drop root privileges */
|
||||
+ if (chown_flag) {
|
||||
|
@ -1,24 +1,13 @@
|
||||
From 04e23aa3f91ff137237daf68f02e7b3c0c1a9168 Mon Sep 17 00:00:00 2001
|
||||
From: rpm-build <rpm-build>
|
||||
Date: Tue, 11 Apr 2017 09:19:48 +0200
|
||||
Subject: [PATCH 09/13] Change -n flag to -nn in TESTonce
|
||||
|
||||
We need to change this because we have a different meaning of -n
|
||||
flag than upstream does. We use -nn in those cases.
|
||||
---
|
||||
tests/TESTonce | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tests/TESTonce b/tests/TESTonce
|
||||
index 425abaa..81283d9 100755
|
||||
--- a/tests/TESTonce
|
||||
+++ b/tests/TESTonce
|
||||
@@ -43,7 +43,7 @@ if ($^O eq 'MSWin32') {
|
||||
else {
|
||||
# we used to do this as a nice pipeline, but the problem is that $r fails to
|
||||
# to be set properly if the tcpdump core dumps.
|
||||
- $cmd = "$TCPDUMP 2>${rawstderrlog} -t -n -r $input $options >tests/NEW/${outputbase}";
|
||||
+ $cmd = "$TCPDUMP 2>${rawstderrlog} -t -nn -r $input $options >tests/NEW/${outputbase}";
|
||||
print "CMD: $cmd\n" if $debug;
|
||||
$r = system $cmd;
|
||||
if($r == -1) {
|
||||
diff --git a/tests/TESTrun b/tests/TESTrun
|
||||
index b423627..aa3c97d 100755
|
||||
--- a/tests/TESTrun
|
||||
+++ b/tests/TESTrun
|
||||
@@ -102,7 +102,7 @@ sub runtest {
|
||||
#
|
||||
# Furthermore, on Windows, fc can't read the standard input, so we
|
||||
# can't do it as a pipeline in any case.
|
||||
- $r = system "$TCPDUMP -# -n -r $input $options >tests/NEW/${outputbase} 2>${rawstderrlog}";
|
||||
+ $r = system "$TCPDUMP -# -nn -r $input $options >tests/NEW/${outputbase} 2>${rawstderrlog}";
|
||||
if($r != 0) {
|
||||
#
|
||||
# Something other than "tcpdump opened the file, read it, and
|
||||
|
@ -1,318 +0,0 @@
|
||||
From 66a5b93dee386bc2f57033a150341752923b8b41 Mon Sep 17 00:00:00 2001
|
||||
From: Gerard Garcia <ggarcia@deic.uab.cat>
|
||||
Date: Tue, 14 Jun 2016 16:45:44 +0200
|
||||
Subject: [PATCH 13/13] Add printing support for vsockmon devices.
|
||||
|
||||
Print Linux 4.12 vsockmon captures:
|
||||
|
||||
# modprobe vsockmon
|
||||
# ip link add type vsockmon
|
||||
# ip link set vsockmon0 up
|
||||
# tcpdump -i vsockmon0
|
||||
16:25:24.987917 VIRTIO 3.1025 > 2.1234 CONNECT, length 76
|
||||
16:25:24.987963 VIRTIO 2.1234 > 3.1025 CONNECT, length 76
|
||||
16:25:26.568271 VIRTIO 3.1025 > 2.1234 PAYLOAD, length 82
|
||||
16:25:26.568512 VIRTIO 2.1234 > 3.1025 CONTROL, length 76
|
||||
16:25:28.411335 VIRTIO 3.1025 > 2.1234 DISCONNECT, length 76
|
||||
16:25:28.411628 VIRTIO 2.1234 > 3.1025 DISCONNECT, length 76
|
||||
|
||||
For more information about vsock see:
|
||||
http://wiki.qemu.org/Features/VirtioVsock
|
||||
---
|
||||
Makefile.in | 1 +
|
||||
netdissect.h | 1 +
|
||||
print-vsock.c | 243 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
print.c | 3 +
|
||||
4 files changed, 248 insertions(+)
|
||||
create mode 100644 print-vsock.c
|
||||
|
||||
diff --git a/Makefile.in b/Makefile.in
|
||||
index 0941f0e..a301878 100644
|
||||
--- a/Makefile.in
|
||||
+++ b/Makefile.in
|
||||
@@ -226,6 +226,7 @@ LIBNETDISSECT_SRC=\
|
||||
print-vjc.c \
|
||||
print-vqp.c \
|
||||
print-vrrp.c \
|
||||
+ print-vsock.c \
|
||||
print-vtp.c \
|
||||
print-vxlan.c \
|
||||
print-vxlan-gpe.c \
|
||||
diff --git a/netdissect.h b/netdissect.h
|
||||
index 089b040..c89fcf1 100644
|
||||
--- a/netdissect.h
|
||||
+++ b/netdissect.h
|
||||
@@ -444,6 +444,7 @@ extern u_int symantec_if_print IF_PRINTER_ARGS;
|
||||
extern u_int token_if_print IF_PRINTER_ARGS;
|
||||
extern u_int usb_linux_48_byte_print IF_PRINTER_ARGS;
|
||||
extern u_int usb_linux_64_byte_print IF_PRINTER_ARGS;
|
||||
+extern u_int vsock_print IF_PRINTER_ARGS;
|
||||
|
||||
/*
|
||||
* Structure passed to some printers to allow them to print
|
||||
diff --git a/print-vsock.c b/print-vsock.c
|
||||
new file mode 100644
|
||||
index 0000000..fc5694d
|
||||
--- /dev/null
|
||||
+++ b/print-vsock.c
|
||||
@@ -0,0 +1,243 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2016 Gerard Garcia <nouboh@gmail.com>
|
||||
+ * Copyright (c) 2017 Red Hat, Inc.
|
||||
+ *
|
||||
+ * Redistribution and use in source and binary forms, with or without
|
||||
+ * modification, are permitted provided that the following conditions
|
||||
+ * are met:
|
||||
+ *
|
||||
+ * 1. Redistributions of source code must retain the above copyright
|
||||
+ * notice, this list of conditions and the following disclaimer.
|
||||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||||
+ * notice, this list of conditions and the following disclaimer in
|
||||
+ * the documentation and/or other materials provided with the
|
||||
+ * distribution.
|
||||
+ * 3. The names of the authors may not be used to endorse or promote
|
||||
+ * products derived from this software without specific prior
|
||||
+ * written permission.
|
||||
+ *
|
||||
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
+ */
|
||||
+
|
||||
+/* \summary: Linux vsock printer */
|
||||
+
|
||||
+#ifdef HAVE_CONFIG_H
|
||||
+#include "config.h"
|
||||
+#endif
|
||||
+
|
||||
+#include <netdissect-stdinc.h>
|
||||
+#include <stddef.h>
|
||||
+
|
||||
+#include "netdissect.h"
|
||||
+#include "extract.h"
|
||||
+
|
||||
+static const char tstr[] = " [|vsock]";
|
||||
+
|
||||
+enum af_vsockmon_transport {
|
||||
+ AF_VSOCK_TRANSPORT_UNKNOWN = 0,
|
||||
+ AF_VSOCK_TRANSPORT_NO_INFO = 1, /* No transport information */
|
||||
+ AF_VSOCK_TRANSPORT_VIRTIO = 2, /* Virtio transport header */
|
||||
+};
|
||||
+
|
||||
+static const struct tok vsock_transport[] = {
|
||||
+ {AF_VSOCK_TRANSPORT_UNKNOWN, "UNKNOWN"},
|
||||
+ {AF_VSOCK_TRANSPORT_NO_INFO, "NO_INFO"},
|
||||
+ {AF_VSOCK_TRANSPORT_VIRTIO, "VIRTIO"},
|
||||
+ { 0, NULL }
|
||||
+};
|
||||
+
|
||||
+enum af_vsockmon_op {
|
||||
+ AF_VSOCK_OP_UNKNOWN = 0,
|
||||
+ AF_VSOCK_OP_CONNECT = 1,
|
||||
+ AF_VSOCK_OP_DISCONNECT = 2,
|
||||
+ AF_VSOCK_OP_CONTROL = 3,
|
||||
+ AF_VSOCK_OP_PAYLOAD = 4,
|
||||
+};
|
||||
+
|
||||
+static const struct tok vsock_op[] = {
|
||||
+ {AF_VSOCK_OP_UNKNOWN, "UNKNOWN"},
|
||||
+ {AF_VSOCK_OP_CONNECT, "CONNECT"},
|
||||
+ {AF_VSOCK_OP_DISCONNECT, "DISCONNECT"},
|
||||
+ {AF_VSOCK_OP_CONTROL, "CONTROL"},
|
||||
+ {AF_VSOCK_OP_PAYLOAD, "PAYLOAD"},
|
||||
+ { 0, NULL }
|
||||
+};
|
||||
+
|
||||
+enum virtio_vsock_type {
|
||||
+ VIRTIO_VSOCK_TYPE_STREAM = 1,
|
||||
+};
|
||||
+
|
||||
+static const struct tok virtio_type[] = {
|
||||
+ {VIRTIO_VSOCK_TYPE_STREAM, "STREAM"},
|
||||
+ { 0, NULL }
|
||||
+};
|
||||
+
|
||||
+enum virtio_vsock_op {
|
||||
+ VIRTIO_VSOCK_OP_INVALID = 0,
|
||||
+ VIRTIO_VSOCK_OP_REQUEST = 1,
|
||||
+ VIRTIO_VSOCK_OP_RESPONSE = 2,
|
||||
+ VIRTIO_VSOCK_OP_RST = 3,
|
||||
+ VIRTIO_VSOCK_OP_SHUTDOWN = 4,
|
||||
+ VIRTIO_VSOCK_OP_RW = 5,
|
||||
+ VIRTIO_VSOCK_OP_CREDIT_UPDATE = 6,
|
||||
+ VIRTIO_VSOCK_OP_CREDIT_REQUEST = 7,
|
||||
+};
|
||||
+
|
||||
+static const struct tok virtio_op[] = {
|
||||
+ {VIRTIO_VSOCK_OP_INVALID, "INVALID"},
|
||||
+ {VIRTIO_VSOCK_OP_REQUEST, "REQUEST"},
|
||||
+ {VIRTIO_VSOCK_OP_RESPONSE, "RESPONSE"},
|
||||
+ {VIRTIO_VSOCK_OP_RST, "RST"},
|
||||
+ {VIRTIO_VSOCK_OP_SHUTDOWN, "SHUTDOWN"},
|
||||
+ {VIRTIO_VSOCK_OP_RW, "RW"},
|
||||
+ {VIRTIO_VSOCK_OP_CREDIT_UPDATE, "CREDIT UPDATE"},
|
||||
+ {VIRTIO_VSOCK_OP_CREDIT_REQUEST, "CREDIT REQUEST"},
|
||||
+ { 0, NULL }
|
||||
+};
|
||||
+
|
||||
+/* All fields are little-endian */
|
||||
+
|
||||
+struct virtio_vsock_hdr {
|
||||
+ uint64_t src_cid;
|
||||
+ uint64_t dst_cid;
|
||||
+ uint32_t src_port;
|
||||
+ uint32_t dst_port;
|
||||
+ uint32_t len;
|
||||
+ uint16_t type; /* enum virtio_vsock_type */
|
||||
+ uint16_t op; /* enum virtio_vsock_op */
|
||||
+ uint32_t flags;
|
||||
+ uint32_t buf_alloc;
|
||||
+ uint32_t fwd_cnt;
|
||||
+} UNALIGNED;
|
||||
+
|
||||
+struct af_vsockmon_hdr {
|
||||
+ uint64_t src_cid;
|
||||
+ uint64_t dst_cid;
|
||||
+ uint32_t src_port;
|
||||
+ uint32_t dst_port;
|
||||
+ uint16_t op; /* enum af_vsockmon_op */
|
||||
+ uint16_t transport; /* enum af_vosckmon_transport */
|
||||
+ uint16_t len; /* size of transport header */
|
||||
+ uint8_t reserved[2];
|
||||
+};
|
||||
+
|
||||
+static void
|
||||
+vsock_virtio_hdr_print(netdissect_options *ndo, const struct virtio_vsock_hdr *hdr)
|
||||
+{
|
||||
+ uint16_t u16_v;
|
||||
+ uint32_t u32_v;
|
||||
+
|
||||
+ u32_v = EXTRACT_LE_32BITS(&hdr->len);
|
||||
+ ND_PRINT((ndo, "len %u", u32_v));
|
||||
+
|
||||
+ u16_v = EXTRACT_LE_16BITS(&hdr->type);
|
||||
+ ND_PRINT((ndo, ", type %s",
|
||||
+ tok2str(virtio_type, "Invalid type (%hu)", u16_v)));
|
||||
+
|
||||
+ u16_v = EXTRACT_LE_16BITS(&hdr->op);
|
||||
+ ND_PRINT((ndo, ", op %s",
|
||||
+ tok2str(virtio_op, "Invalid op (%hu)", u16_v)));
|
||||
+
|
||||
+ u32_v = EXTRACT_LE_32BITS(&hdr->flags);
|
||||
+ ND_PRINT((ndo, ", flags %x", u32_v));
|
||||
+
|
||||
+ u32_v = EXTRACT_LE_32BITS(&hdr->buf_alloc);
|
||||
+ ND_PRINT((ndo, ", buf_alloc %u", u32_v));
|
||||
+
|
||||
+ u32_v = EXTRACT_LE_32BITS(&hdr->fwd_cnt);
|
||||
+ ND_PRINT((ndo, ", fwd_cnt %u", u32_v));
|
||||
+}
|
||||
+
|
||||
+static size_t
|
||||
+vsock_transport_hdr_size(uint16_t transport)
|
||||
+{
|
||||
+ switch (transport) {
|
||||
+ case AF_VSOCK_TRANSPORT_VIRTIO:
|
||||
+ return sizeof(struct virtio_vsock_hdr);
|
||||
+ default:
|
||||
+ return 0;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+vsock_transport_hdr_print(netdissect_options *ndo, uint16_t transport,
|
||||
+ const u_char *p, const u_int len)
|
||||
+{
|
||||
+ size_t transport_size = vsock_transport_hdr_size(transport);
|
||||
+ const void *hdr;
|
||||
+
|
||||
+ if (len < sizeof(struct af_vsockmon_hdr) + transport_size)
|
||||
+ return;
|
||||
+
|
||||
+ hdr = p + sizeof(struct af_vsockmon_hdr);
|
||||
+ switch (transport) {
|
||||
+ case AF_VSOCK_TRANSPORT_VIRTIO:
|
||||
+ ND_PRINT((ndo, " ("));
|
||||
+ vsock_virtio_hdr_print(ndo, hdr);
|
||||
+ ND_PRINT((ndo, ")"));
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+vsock_hdr_print(netdissect_options *ndo, const u_char *p, const u_int len)
|
||||
+{
|
||||
+ uint16_t hdr_transport, hdr_op;
|
||||
+ uint32_t hdr_src_port, hdr_dst_port;
|
||||
+ uint64_t hdr_src_cid, hdr_dst_cid;
|
||||
+ size_t total_hdr_size;
|
||||
+
|
||||
+ const struct af_vsockmon_hdr *hdr = (struct af_vsockmon_hdr *)p;
|
||||
+
|
||||
+ hdr_transport = EXTRACT_LE_16BITS(&hdr->transport);
|
||||
+ ND_PRINT((ndo, "%s",
|
||||
+ tok2str(vsock_transport, "Invalid transport (%u)",
|
||||
+ hdr_transport)));
|
||||
+
|
||||
+ /* If verbose level is more than 0 print transport details */
|
||||
+ if (ndo->ndo_vflag) {
|
||||
+ vsock_transport_hdr_print(ndo, hdr_transport, p, len);
|
||||
+ ND_PRINT((ndo, "\n\t"));
|
||||
+ } else
|
||||
+ ND_PRINT((ndo, " "));
|
||||
+
|
||||
+ hdr_src_cid = EXTRACT_LE_64BITS(&hdr->src_cid);
|
||||
+ hdr_dst_cid = EXTRACT_LE_64BITS(&hdr->dst_cid);
|
||||
+ hdr_src_port = EXTRACT_LE_32BITS(&hdr->src_port);
|
||||
+ hdr_dst_port = EXTRACT_LE_32BITS(&hdr->dst_port);
|
||||
+ hdr_op = EXTRACT_LE_16BITS(&hdr->op);
|
||||
+ ND_PRINT((ndo, "%lu.%hu > %lu.%hu %s, length %u",
|
||||
+ hdr_src_cid, hdr_src_port,
|
||||
+ hdr_dst_cid, hdr_dst_port,
|
||||
+ tok2str(vsock_op, " invalid op (%u)", hdr_op),
|
||||
+ len));
|
||||
+
|
||||
+ /* If debug level is more than 1 print payload contents */
|
||||
+ total_hdr_size = sizeof(struct af_vsockmon_hdr) +
|
||||
+ vsock_transport_hdr_size(hdr_transport);
|
||||
+ if (ndo->ndo_vflag > 1 &&
|
||||
+ hdr_op == AF_VSOCK_OP_PAYLOAD &&
|
||||
+ len > total_hdr_size) {
|
||||
+ const u_char *payload = p + total_hdr_size;
|
||||
+
|
||||
+ ND_PRINT((ndo, "\n"));
|
||||
+ print_unknown_data(ndo, payload, "\t", len - total_hdr_size);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+u_int
|
||||
+vsock_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_char *cp)
|
||||
+{
|
||||
+ u_int len = h->len;
|
||||
+
|
||||
+ if (len < sizeof(struct af_vsockmon_hdr))
|
||||
+ ND_PRINT((ndo, "%s", tstr));
|
||||
+ else
|
||||
+ vsock_hdr_print(ndo, cp, len);
|
||||
+
|
||||
+ return len;
|
||||
+}
|
||||
diff --git a/print.c b/print.c
|
||||
index c76f344..1945cfd 100644
|
||||
--- a/print.c
|
||||
+++ b/print.c
|
||||
@@ -220,6 +220,9 @@ static const struct printer printers[] = {
|
||||
#ifdef DLT_PPP_SERIAL
|
||||
{ ppp_hdlc_if_print, DLT_PPP_SERIAL },
|
||||
#endif
|
||||
+#ifdef DLT_VSOCK
|
||||
+ { vsock_print, DLT_VSOCK },
|
||||
+#endif
|
||||
{ NULL, 0 },
|
||||
};
|
||||
|
||||
--
|
||||
2.13.5
|
||||
|
@ -1,63 +0,0 @@
|
||||
From 32027e199368dad9508965aae8cd8de5b6ab5231 Mon Sep 17 00:00:00 2001
|
||||
From: Guy Harris <guy@alum.mit.edu>
|
||||
Date: Sat, 18 Apr 2020 14:04:59 -0700
|
||||
Subject: [PATCH] PPP: When un-escaping, don't allocate a too-large buffer.
|
||||
|
||||
The buffer should be big enough to hold the captured data, but it
|
||||
doesn't need to be big enough to hold the entire on-the-network packet,
|
||||
if we haven't captured all of it.
|
||||
|
||||
(backported from commit e4add0b010ed6f2180dcb05a13026242ed935334)
|
||||
---
|
||||
print-ppp.c | 18 ++++++++++++++----
|
||||
1 file changed, 14 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/print-ppp.c b/print-ppp.c
|
||||
index 891761728..33fb03412 100644
|
||||
--- a/print-ppp.c
|
||||
+++ b/print-ppp.c
|
||||
@@ -1367,19 +1367,29 @@ print_bacp_config_options(netdissect_options *ndo,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Un-escape RFC 1662 PPP in HDLC-like framing, with octet escapes.
|
||||
+ * The length argument is the on-the-wire length, not the captured
|
||||
+ * length; we can only un-escape the captured part.
|
||||
+ */
|
||||
static void
|
||||
ppp_hdlc(netdissect_options *ndo,
|
||||
const u_char *p, int length)
|
||||
{
|
||||
+ u_int caplen = ndo->ndo_snapend - p;
|
||||
u_char *b, *t, c;
|
||||
const u_char *s;
|
||||
- int i, proto;
|
||||
+ u_int i;
|
||||
+ int proto;
|
||||
const void *se;
|
||||
|
||||
+ if (caplen == 0)
|
||||
+ return;
|
||||
+
|
||||
if (length <= 0)
|
||||
return;
|
||||
|
||||
- b = (u_char *)malloc(length);
|
||||
+ b = (u_char *)malloc(caplen);
|
||||
if (b == NULL)
|
||||
return;
|
||||
|
||||
@@ -1388,10 +1398,10 @@ ppp_hdlc(netdissect_options *ndo,
|
||||
* Do this so that we dont overwrite the original packet
|
||||
* contents.
|
||||
*/
|
||||
- for (s = p, t = b, i = length; i > 0 && ND_TTEST(*s); i--) {
|
||||
+ for (s = p, t = b, i = caplen; i != 0; i--) {
|
||||
c = *s++;
|
||||
if (c == 0x7d) {
|
||||
- if (i <= 1 || !ND_TTEST(*s))
|
||||
+ if (i <= 1)
|
||||
break;
|
||||
i--;
|
||||
c = *s++ ^ 0x20;
|
4
sources
4
sources
@ -1,3 +1,3 @@
|
||||
SHA512 (tcpdump-4.99.0.tar.gz) = 03a434ec41c0026f237bc1e7a928b7ce67dbc342a8d982caded93d987bd356faf706a9d884231bd94f5e2a8580499fe95a28728e37a6672e371a1501ec5d6f79
|
||||
SHA512 (tcpdump-4.99.0.tar.gz.sig) = 545770f09bec2f4ab3e723ab8582f1256eb0cb774ac2f329de17a45ee8256faea49469b796e17250d10c0455b305d39283c9b1d8b3c5a06c47a0d8088c874803
|
||||
SHA512 (tcpslice-1.2a3.tar.gz) = 04e12d592807022c78eb4941580ed103995680c69af885bb8f13828a12ec570f7fe93c34c1b20a01d3d99f445d5da17a1fcfbe25b2e3b41abe28304c034654c5
|
||||
SHA512 (tcpdump-4.9.3.tar.gz) = 22354dbbf6ab3f7519035b41702a8dc93472dc808e88e76414a06dd69eca822e3d6b94ec608cfeffe25572125757824e97e6a4a7ec81d45e990429e8faf774cb
|
||||
SHA512 (tcpdump-4.9.3.tar.gz.sig) = b8b189a522b924c717c30f09a9d60ede76cfbb0ffc6cd185fec1887230d06117663b6f55e7489c0e34b744a89e05e78509ca8a1551a94f6e091cbafc643b0c8c
|
||||
|
11
tcpdump.spec
11
tcpdump.spec
@ -1,8 +1,8 @@
|
||||
Summary: A network traffic monitoring tool
|
||||
Name: tcpdump
|
||||
Epoch: 14
|
||||
Version: 4.9.3
|
||||
Release: 7%{?dist}
|
||||
Version: 4.99.0
|
||||
Release: 1%{?dist}
|
||||
License: BSD with advertising
|
||||
URL: http://www.tcpdump.org
|
||||
Requires(pre): shadow-utils
|
||||
@ -20,9 +20,7 @@ Patch0005: 0005-tcpslice-remove-unneeded-include.patch
|
||||
Patch0006: 0006-tcpslice-don-t-test-the-pointer-but-pointee-for-NULL.patch
|
||||
Patch0007: 0007-Introduce-nn-option.patch
|
||||
Patch0009: 0009-Change-n-flag-to-nn-in-TESTonce.patch
|
||||
Patch0011: 0011-Evp-cipher-buffers.patch
|
||||
Patch0012: 0012-Add-printing-support-for-vsockmon-devices.patch
|
||||
Patch0013: 0013-CVE-2020-8037.patch
|
||||
#Patch0011: 0011-Evp-cipher-buffers.patch
|
||||
|
||||
%define tcpslice_dir tcpslice-1.2a3
|
||||
|
||||
@ -87,6 +85,9 @@ exit 0
|
||||
%{_mandir}/man8/tcpdump.8*
|
||||
|
||||
%changelog
|
||||
* Fri Feb 12 2021 Michal Ruprich <mruprich@redhat.com> - 14:4.99.0-1
|
||||
- New version 4.99.0
|
||||
|
||||
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 14:4.9.3-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user