summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormartijn <martijn@openbsd.org>2020-03-11 06:53:42 +0000
committermartijn <martijn@openbsd.org>2020-03-11 06:53:42 +0000
commit56e88aeb3e9c1860e7c15ca167c98b38ecf79e69 (patch)
tree2081ef8cfe30293056fd4bd402b0040080717882
parentVariables 'nowait' amd 'flags' should have died in 2008 with r1.36's (diff)
downloadwireguard-openbsd-56e88aeb3e9c1860e7c15ca167c98b38ecf79e69.tar.xz
wireguard-openbsd-56e88aeb3e9c1860e7c15ca167c98b38ecf79e69.zip
Make traphandler_parse also set vbinds for SNMPv1 traps.
This also prevents the access of an initialized pointer in traphandler_fork_handler as found by jan@. OK jan@
-rw-r--r--usr.sbin/snmpd/traphandler.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/usr.sbin/snmpd/traphandler.c b/usr.sbin/snmpd/traphandler.c
index fdb38297ea4..bf8218c1202 100644
--- a/usr.sbin/snmpd/traphandler.c
+++ b/usr.sbin/snmpd/traphandler.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: traphandler.c,v 1.15 2019/10/24 12:39:27 tb Exp $ */
+/* $OpenBSD: traphandler.c,v 1.16 2020/03/11 06:53:42 martijn Exp $ */
/*
* Copyright (c) 2014 Bret Stephen Lambert <blambert@openbsd.org>
@@ -232,10 +232,13 @@ traphandler_parse(char *buf, size_t n, struct ber_element **req,
switch (vers) {
case SNMP_V1:
- if (ober_scanf_elements(elm, "{oSddd",
- trapoid, &gtype, &etype, uptime) == -1)
+ if (ober_scanf_elements(elm, "{oSddde",
+ trapoid, &gtype, &etype, uptime, &elm) == -1)
goto done;
traphandler_v1translate(trapoid, gtype, etype);
+ if (elm->be_type != BER_TYPE_SEQUENCE)
+ goto done;
+ *vbinds = elm->be_sub;
break;
case SNMP_V2: