Skip to content

Commit 2f19d30

Browse files
committed
ext/snmp: promote invalid-input warnings to ValueError
1 parent 2fd3433 commit 2f19d30

File tree

5 files changed

+44
-33
lines changed

5 files changed

+44
-33
lines changed

ext/snmp/snmp.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,7 @@ static bool php_snmp_parse_oid(
745745
objid_query->vars[objid_query->count].type = ptype;
746746
idx_type++;
747747
} else {
748-
php_error_docref(NULL, E_WARNING, "'%s': no type set", ZSTR_VAL(tmp));
748+
zend_value_error("'%s': no type set", ZSTR_VAL(tmp));
749749
php_free_objid_query(objid_query, oid_ht, value_ht, st);
750750
return false;
751751
}
@@ -780,7 +780,7 @@ static bool php_snmp_parse_oid(
780780
objid_query->vars[objid_query->count].value = ZSTR_VAL(tmp);
781781
idx_value++;
782782
} else {
783-
php_error_docref(NULL, E_WARNING, "'%s': no value set", ZSTR_VAL(tmp));
783+
zend_value_error("'%s': no value set", ZSTR_VAL(tmp));
784784
php_free_objid_query(objid_query, oid_ht, value_ht, st);
785785
return false;
786786
}
@@ -906,7 +906,7 @@ static bool snmp_session_init(php_snmp_session **session_p, int version, zend_st
906906
}
907907
*pptr = '\0';
908908
} else {
909-
php_error_docref(NULL, E_WARNING, "Malformed IPv6 address, closing square bracket missing");
909+
zend_value_error("Malformed IPv6 address, closing square bracket missing");
910910
return false;
911911
}
912912
} else { /* IPv4 address */
@@ -1128,8 +1128,7 @@ static bool snmp_session_set_contextEngineID(struct snmp_session *s, zend_string
11281128
uint8_t *ebuf = (uint8_t *) emalloc(ebuf_len);
11291129

11301130
if (!snmp_hex_to_binary(&ebuf, &ebuf_len, &eout_len, 1, ZSTR_VAL(contextEngineID))) {
1131-
// TODO Promote to Error?
1132-
php_error_docref(NULL, E_WARNING, "Bad engine ID value '%s'", ZSTR_VAL(contextEngineID));
1131+
zend_value_error("Bad engine ID value '%s'", ZSTR_VAL(contextEngineID));
11331132
efree(ebuf);
11341133
return false;
11351134
}

ext/snmp/tests/ipv6.phpt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ snmp_set_quick_print(false);
2222
snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
2323

2424
var_dump(snmpget($hostname6_port, $community, '.1.3.6.1.2.1.1.1.0'));
25-
var_dump(snmpget('[dead:beef::', $community, '.1.3.6.1.2.1.1.1.0'));
25+
try {
26+
var_dump(snmpget('[dead:beef::', $community, '.1.3.6.1.2.1.1.1.0'));
27+
} catch (\ValueError $e) {
28+
echo $e->getMessage() . \PHP_EOL;
29+
}
2630
?>
2731
--EXPECTF--
2832
string(%d) "%s"
29-
30-
Warning: snmpget(): Malformed IPv6 address, closing square bracket missing in %s on line %d
31-
bool(false)
33+
Malformed IPv6 address, closing square bracket missing

ext/snmp/tests/snmp-object-setSecurity_error.phpt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@ try {
5353

5454
var_dump($session->setSecurity('authPriv', 'MD5', $auth_pass, 'AES', ''));
5555
var_dump($session->setSecurity('authPriv', 'MD5', $auth_pass, 'AES', 'ty'));
56-
var_dump($session->setSecurity('authPriv', 'MD5', $auth_pass, 'AES', 'test12345', 'context', 'dsa'));
56+
try {
57+
var_dump($session->setSecurity('authPriv', 'MD5', $auth_pass, 'AES', 'test12345', 'context', 'dsa'));
58+
} catch (\ValueError $e) {
59+
echo $e->getMessage() . \PHP_EOL;
60+
}
5761

5862
var_dump($session->close());
5963

@@ -76,7 +80,5 @@ bool(false)
7680

7781
Warning: SNMP::setSecurity(): Error generating a key for privacy pass phrase 'ty': Generic error (The supplied password length is too short.) in %s on line %d
7882
bool(false)
79-
80-
Warning: SNMP::setSecurity(): Bad engine ID value 'dsa' in %s on line %d
81-
bool(false)
83+
Bad engine ID value 'dsa'
8284
bool(true)

ext/snmp/tests/snmp2_set.phpt

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,22 @@ var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $ol
128128
var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
129129

130130
echo "Multiple OID, single type in array, multiple value\n";
131-
$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s'), array($newvalue1, $newvalue2), $timeout, $retries);
132-
var_dump($z);
131+
try {
132+
$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s'), array($newvalue1, $newvalue2), $timeout, $retries);
133+
var_dump($z);
134+
} catch (\ValueError $e) {
135+
echo $e->getMessage() . \PHP_EOL;
136+
}
133137
var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
134138
var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
135139

136140
echo "Multiple OID & type, single value in array\n";
137-
$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s', 's'), array($newvalue1), $timeout, $retries);
138-
var_dump($z);
141+
try {
142+
$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s', 's'), array($newvalue1), $timeout, $retries);
143+
var_dump($z);
144+
} catch (\ValueError $e) {
145+
echo $e->getMessage() . \PHP_EOL;
146+
}
139147
var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
140148
var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
141149

@@ -224,15 +232,11 @@ Type must be a single character
224232
bool(true)
225233
bool(true)
226234
Multiple OID, single type in array, multiple value
227-
228-
Warning: snmp2_set(): '%s': no type set in %s on line %d
229-
bool(false)
235+
'SNMPv2-MIB::sysLocation.0': no type set
230236
bool(true)
231237
bool(true)
232238
Multiple OID & type, single value in array
233-
234-
Warning: snmp2_set(): '%s': no value set in %s on line %d
235-
bool(false)
239+
'SNMPv2-MIB::sysLocation.0': no value set
236240
bool(true)
237241
bool(true)
238242
Multiple OID, 1st bogus, single type, multiple value

ext/snmp/tests/snmpset.phpt

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -122,14 +122,22 @@ var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $ol
122122
var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
123123

124124
echo "Multiple OID, single type in array, multiple value\n";
125-
$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s'), array($newvalue1, $newvalue2), $timeout, $retries);
126-
var_dump($z);
125+
try {
126+
$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s'), array($newvalue1, $newvalue2), $timeout, $retries);
127+
var_dump($z);
128+
} catch (\ValueError $e) {
129+
echo $e->getMessage() . \PHP_EOL;
130+
}
127131
var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
128132
var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
129133

130134
echo "Multiple OID & type, single value in array\n";
131-
$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s', 's'), array($newvalue1), $timeout, $retries);
132-
var_dump($z);
135+
try {
136+
$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s', 's'), array($newvalue1), $timeout, $retries);
137+
var_dump($z);
138+
} catch (\ValueError $e) {
139+
echo $e->getMessage() . \PHP_EOL;
140+
}
133141
var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1));
134142
var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2));
135143

@@ -215,15 +223,11 @@ Type must be a single character
215223
bool(true)
216224
bool(true)
217225
Multiple OID, single type in array, multiple value
218-
219-
Warning: snmpset(): '%s': no type set in %s on line %d
220-
bool(false)
226+
'SNMPv2-MIB::sysLocation.0': no type set
221227
bool(true)
222228
bool(true)
223229
Multiple OID & type, single value in array
224-
225-
Warning: snmpset(): '%s': no value set in %s on line %d
226-
bool(false)
230+
'SNMPv2-MIB::sysLocation.0': no value set
227231
bool(true)
228232
bool(true)
229233
Multiple OID, 1st bogus, single type, multiple value

0 commit comments

Comments
 (0)