diff --git a/NEWS b/NEWS index ac262fcb1bbf0..911e91074e910 100644 --- a/NEWS +++ b/NEWS @@ -98,6 +98,10 @@ PHP NEWS . Fixed bug GH-17153 (SimpleXML crash when using autovivification on document). (nielsdos) +- SNMP: + . Fixed bug GH-17330 (SNMP::setSecurity segfault on closed session). + (David Carlier) + - Sockets: . Fixed bug GH-16276 (socket_strerror overflow handling with INT_MIN). (David Carlier / cmb) diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c index 2e18d8e0128a6..b5bb9f91745c6 100644 --- a/ext/snmp/snmp.c +++ b/ext/snmp/snmp.c @@ -1660,6 +1660,10 @@ PHP_METHOD(SNMP, setSecurity) zend_string *a1 = NULL, *a2 = NULL, *a3 = NULL, *a4 = NULL, *a5 = NULL, *a6 = NULL, *a7 = NULL; snmp_object = Z_SNMP_P(object); + if (!snmp_object->session) { + zend_throw_error(NULL, "Invalid or uninitialized SNMP object"); + RETURN_THROWS(); + } if (zend_parse_parameters(ZEND_NUM_ARGS(), "S|SSSSSS", &a1, &a2, &a3, &a4,&a5, &a6, &a7) == FAILURE) { RETURN_THROWS(); diff --git a/ext/snmp/tests/gh17330.phpt b/ext/snmp/tests/gh17330.phpt new file mode 100644 index 0000000000000..a6f077a9c8600 --- /dev/null +++ b/ext/snmp/tests/gh17330.phpt @@ -0,0 +1,18 @@ +--TEST-- +SNMP::setSecurity() segfault when the object had been closed. +--EXTENSIONS-- +snmp +--CREDITS-- +YuanchengJiang +--FILE-- +close(); +try { + $session->setSecurity('authPriv', 'MD5', '', 'AES', ''); +} catch(Error $e) { + echo $e->getMessage(); +} +?> +--EXPECT-- +Invalid or uninitialized SNMP object