varbind was designed to allow both a ber NULL and a NULL pointer for
authormartijn <martijn@openbsd.org>
Tue, 13 Sep 2022 10:22:07 +0000 (10:22 +0000)
committermartijn <martijn@openbsd.org>
Tue, 13 Sep 2022 10:22:07 +0000 (10:22 +0000)
commitf0c6917b24ac93196d5ab0117332241157a4d5b0
treee58f51a2f59730731cbf9655357fc35b6c0505de
parent56d20486bed522a99ad052e86a826eee7026dad1
varbind was designed to allow both a ber NULL and a NULL pointer for
value. The ber NULL case is there for when it was received via a PDU.
The NULL pointer case can happen if application.c runs into a timeout
or when a backend runs into problems.

The NULL pointer case however was overlooked in appl_varbind_valid and
results in an "missing value" error, (needlessly) terminating the
connection to the backend.

Found the hard way by Mischa Peters while stress testing agentx support
for vmd.

OK tb@, sthen@
usr.sbin/snmpd/application.c