Commit d0167e73e9a for php.net
commit d0167e73e9a8d808b85b3b6aba00d16216459b1f
Author: Pratik Bhujel <prateekbhujelpb@gmail.com>
Date: Mon Apr 13 17:32:23 2026 +0545
ext/snmp: rename argument and variables to be more consistent and informative (#21723)
diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c
index 9b520bce902..ecea48883d5 100644
--- a/ext/snmp/snmp.c
+++ b/ext/snmp/snmp.c
@@ -654,7 +654,7 @@ static void php_free_objid_query(struct objid_query *objid_query, HashTable* oid
static bool php_snmp_parse_oid(
zval *object, int st, struct objid_query *objid_query, zend_string *oid_str, HashTable *oid_ht,
zend_string *type_str, HashTable *type_ht, zend_string *value_str, HashTable *value_ht,
- uint32_t oid_argument_offset, uint32_t type_argument_offset, uint32_t value_argument_offset
+ uint32_t oid_arg_num, uint32_t type_arg_num, uint32_t value_arg_num
) {
char *pptr;
uint32_t idx_type = 0, idx_value = 0;
@@ -681,7 +681,7 @@ static bool php_snmp_parse_oid(
ZEND_ASSERT(type_str && value_str);
if (ZSTR_LEN(type_str) != 1) {
- zend_argument_value_error(type_argument_offset, "must be a single character");
+ zend_argument_value_error(type_arg_num, "must be a single character");
efree(objid_query->vars);
return false;
}
@@ -692,7 +692,7 @@ static bool php_snmp_parse_oid(
objid_query->count++;
} else if (oid_ht) { /* we got objid array */
if (zend_hash_num_elements(oid_ht) == 0) {
- zend_argument_value_error(oid_argument_offset, "must not be empty when passed as an array");
+ zend_argument_value_error(oid_arg_num, "must not be empty when passed as an array");
return false;
}
objid_query->vars = (snmpobjarg *)safe_emalloc(sizeof(snmpobjarg), zend_hash_num_elements(oid_ht), 0);
@@ -737,14 +737,14 @@ static bool php_snmp_parse_oid(
char ptype = *ZSTR_VAL(type);
zend_string_release(type);
if (len != 1) {
- zend_argument_value_error(type_argument_offset, "must be a single character");
+ zend_argument_value_error(type_arg_num, "must be a single character");
php_free_objid_query(objid_query, oid_ht, value_ht, st);
return false;
}
objid_query->vars[objid_query->count].type = ptype;
idx_type++;
} else {
- zend_argument_value_error(type_argument_offset, "must contain a type for object ID '%s'", ZSTR_VAL(tmp));
+ zend_argument_value_error(type_arg_num, "must contain a type for object ID '%s'", ZSTR_VAL(tmp));
php_free_objid_query(objid_query, oid_ht, value_ht, st);
return false;
}
@@ -779,7 +779,7 @@ static bool php_snmp_parse_oid(
objid_query->vars[objid_query->count].value = ZSTR_VAL(tmp);
idx_value++;
} else {
- zend_argument_value_error(value_argument_offset, "must contain a value for object ID '%s'", ZSTR_VAL(tmp));
+ zend_argument_value_error(value_arg_num, "must contain a value for object ID '%s'", ZSTR_VAL(tmp));
php_free_objid_query(objid_query, oid_ht, value_ht, st);
return false;
}
@@ -826,7 +826,7 @@ static bool php_snmp_parse_oid(
/* {{{ snmp_session_init
allocates memory for session and session->peername, caller should free it manually using snmp_session_free() and efree()
*/
-static bool snmp_session_init(php_snmp_session **session_p, int version, zend_string *hostname, zend_string *community, zend_long timeout, zend_long retries, int hostname_argument_offset, int timeout_argument_offset)
+static bool snmp_session_init(php_snmp_session **session_p, int version, zend_string *hostname, zend_string *community, zend_long timeout, zend_long retries, uint32_t hostname_arg_num, uint32_t timeout_arg_num)
{
php_snmp_session *session;
char *pptr, *host_ptr;
@@ -841,23 +841,23 @@ static bool snmp_session_init(php_snmp_session **session_p, int version, zend_st
ZEND_ASSERT(community != NULL);
if (ZSTR_LEN(hostname) >= MAX_NAME_LEN) {
- zend_argument_value_error(hostname_argument_offset, "length must be lower than %d", MAX_NAME_LEN);
+ zend_argument_value_error(hostname_arg_num, "length must be lower than %d", MAX_NAME_LEN);
return false;
}
if (ZSTR_LEN(community) == 0) {
- zend_argument_must_not_be_empty_error(hostname_argument_offset + 1);
+ zend_argument_must_not_be_empty_error(hostname_arg_num + 1);
return false;
}
- if (timeout_argument_offset != -1) {
+ if (timeout_arg_num != 0) {
if (timeout < -1 || timeout > LONG_MAX) {
- zend_argument_value_error(timeout_argument_offset, "must be between -1 and %ld", LONG_MAX);
+ zend_argument_value_error(timeout_arg_num, "must be between -1 and %ld", LONG_MAX);
return false;
}
if (retries < -1 || retries > INT_MAX) {
- zend_argument_value_error(timeout_argument_offset + 1, "must be between -1 and %d", INT_MAX);
+ zend_argument_value_error(timeout_arg_num + 1, "must be between -1 and %d", INT_MAX);
return false;
}
}
@@ -888,14 +888,14 @@ static bool snmp_session_init(php_snmp_session **session_p, int version, zend_st
char *pport = pptr + 2;
tmp_port = atoi(pport);
if (tmp_port < 0 || tmp_port > USHRT_MAX) {
- zend_argument_value_error(hostname_argument_offset, "remote port must be between 0 and %u", USHRT_MAX);
+ zend_argument_value_error(hostname_arg_num, "remote port must be between 0 and %u", USHRT_MAX);
return false;
}
remote_port = (unsigned short)tmp_port;
}
*pptr = '\0';
} else {
- zend_argument_value_error(hostname_argument_offset, "has a malformed IPv6 address, closing square bracket missing");
+ zend_argument_value_error(hostname_arg_num, "has a malformed IPv6 address, closing square bracket missing");
return false;
}
} else { /* IPv4 address */
@@ -903,7 +903,7 @@ static bool snmp_session_init(php_snmp_session **session_p, int version, zend_st
char *pport = pptr + 1;
tmp_port = atoi(pport);
if (tmp_port < 0 || tmp_port > USHRT_MAX) {
- zend_argument_value_error(hostname_argument_offset, "remote port must be between 0 and %u", USHRT_MAX);
+ zend_argument_value_error(hostname_arg_num, "remote port must be between 0 and %u", USHRT_MAX);
return false;
}
remote_port = (unsigned short)tmp_port;
@@ -1112,13 +1112,13 @@ static ZEND_ATTRIBUTE_NONNULL bool snmp_session_gen_sec_key(struct snmp_session
/* }}} */
/* {{{ Set context Engine Id in the snmpv3 session */
-static bool snmp_session_set_contextEngineID(struct snmp_session *s, zend_string * contextEngineID, uint32_t contextEngineID_argument_offset)
+static bool snmp_session_set_contextEngineID(struct snmp_session *s, zend_string *contextEngineID, uint32_t context_engine_id_arg_num)
{
size_t ebuf_len = 32, eout_len = 0;
uint8_t *ebuf = (uint8_t *) emalloc(ebuf_len);
if (!snmp_hex_to_binary(&ebuf, &ebuf_len, &eout_len, 1, ZSTR_VAL(contextEngineID))) {
- zend_argument_value_error(contextEngineID_argument_offset, "must be a valid context engine ID");
+ zend_argument_value_error(context_engine_id_arg_num, "must be a valid context engine ID");
efree(ebuf);
return false;
}
@@ -1134,13 +1134,13 @@ static bool snmp_session_set_contextEngineID(struct snmp_session *s, zend_string
/* }}} */
/* {{{ Set all snmpv3-related security options
- * auth_protocol_argnum and contextEngineID_argument_offset are the userland
+ * auth_protocol_arg_num and context_engine_id_arg_num are the userland
* argument numbers used for error reporting.
*/
static ZEND_ATTRIBUTE_NONNULL_ARGS(2) bool snmp_session_set_security(struct snmp_session *session, zend_string *sec_level,
zend_string *auth_protocol, zend_string *auth_passphrase, zend_string *priv_protocol,
zend_string *priv_passphrase, zend_string *contextName, zend_string *contextEngineID,
- uint32_t auth_protocol_argnum, uint32_t contextEngineID_argument_offset)
+ uint32_t auth_protocol_arg_num, uint32_t context_engine_id_arg_num)
{
/* Setting the security level. */
@@ -1152,7 +1152,7 @@ static ZEND_ATTRIBUTE_NONNULL_ARGS(2) bool snmp_session_set_security(struct snmp
if (session->securityLevel == SNMP_SEC_LEVEL_AUTHNOPRIV || session->securityLevel == SNMP_SEC_LEVEL_AUTHPRIV) {
if (!auth_protocol) {
- zend_argument_value_error(auth_protocol_argnum, "cannot be null when security level is \"authNoPriv\" or \"authPriv\"");
+ zend_argument_value_error(auth_protocol_arg_num, "cannot be null when security level is \"authNoPriv\" or \"authPriv\"");
return false;
}
@@ -1163,7 +1163,7 @@ static ZEND_ATTRIBUTE_NONNULL_ARGS(2) bool snmp_session_set_security(struct snmp
}
if (!auth_passphrase) {
- zend_argument_value_error(auth_protocol_argnum + 1, "cannot be null when security level is \"authNoPriv\" or \"authPriv\"");
+ zend_argument_value_error(auth_protocol_arg_num + 1, "cannot be null when security level is \"authNoPriv\" or \"authPriv\"");
return false;
}
@@ -1176,7 +1176,7 @@ static ZEND_ATTRIBUTE_NONNULL_ARGS(2) bool snmp_session_set_security(struct snmp
if (session->securityLevel == SNMP_SEC_LEVEL_AUTHPRIV) {
if (!priv_protocol) {
- zend_argument_value_error(auth_protocol_argnum + 2, "cannot be null when security level is \"authPriv\"");
+ zend_argument_value_error(auth_protocol_arg_num + 2, "cannot be null when security level is \"authPriv\"");
return false;
}
@@ -1187,7 +1187,7 @@ static ZEND_ATTRIBUTE_NONNULL_ARGS(2) bool snmp_session_set_security(struct snmp
}
if (!priv_passphrase) {
- zend_argument_value_error(auth_protocol_argnum + 3, "cannot be null when security level is \"authPriv\"");
+ zend_argument_value_error(auth_protocol_arg_num + 3, "cannot be null when security level is \"authPriv\"");
return false;
}
@@ -1206,7 +1206,7 @@ static ZEND_ATTRIBUTE_NONNULL_ARGS(2) bool snmp_session_set_security(struct snmp
}
/* Setting contextEngineIS if specified */
- if (contextEngineID && ZSTR_LEN(contextEngineID) && !snmp_session_set_contextEngineID(session, contextEngineID, contextEngineID_argument_offset)) {
+ if (contextEngineID && ZSTR_LEN(contextEngineID) && !snmp_session_set_contextEngineID(session, contextEngineID, context_engine_id_arg_num)) {
/* Warning message sent already, just bail out */
return false;
}
@@ -1226,15 +1226,17 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version)
{
zend_string *oid_str, *type_str = NULL, *value_str = NULL;
HashTable *oid_ht, *type_ht = NULL, *value_ht = NULL;
- zend_string *a1 = NULL, *a2 = NULL, *a3 = NULL, *a4 = NULL, *a5 = NULL, *a6 = NULL, *a7 = NULL;
+ zend_string *hostname = NULL, *community_or_security_name = NULL;
+ zend_string *security_level = NULL, *auth_protocol = NULL, *auth_passphrase = NULL;
+ zend_string *privacy_protocol = NULL, *privacy_passphrase = NULL;
bool use_orignames = 0, suffix_keys = 0;
zend_long timeout = SNMP_DEFAULT_TIMEOUT;
zend_long retries = SNMP_DEFAULT_RETRIES;
struct objid_query objid_query;
php_snmp_session *session;
int session_less_mode = (getThis() == NULL);
- int timeout_argument_offset = -1;
- uint32_t oid_argument_offset = 1, type_argument_offset = 0, value_argument_offset = 0;
+ uint32_t timeout_arg_num = 0;
+ uint32_t oid_arg_num = 1, type_arg_num = 0, value_arg_num = 0;
php_snmp_object *snmp_object;
php_snmp_object glob_snmp_object;
@@ -1247,13 +1249,13 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version)
if (version == SNMP_VERSION_3) {
if (st & SNMP_CMD_SET) {
ZEND_PARSE_PARAMETERS_START(10, 12)
- Z_PARAM_PATH_STR(a1)
- Z_PARAM_PATH_STR(a2)
- Z_PARAM_STR(a3)
- Z_PARAM_STR(a4)
- Z_PARAM_STR(a5)
- Z_PARAM_STR(a6)
- Z_PARAM_STR(a7)
+ Z_PARAM_PATH_STR(hostname)
+ Z_PARAM_PATH_STR(community_or_security_name)
+ Z_PARAM_STR(security_level)
+ Z_PARAM_STR(auth_protocol)
+ Z_PARAM_STR(auth_passphrase)
+ Z_PARAM_STR(privacy_protocol)
+ Z_PARAM_STR(privacy_passphrase)
Z_PARAM_ARRAY_HT_OR_STR(oid_ht, oid_str)
Z_PARAM_ARRAY_HT_OR_STR(type_ht, type_str)
Z_PARAM_ARRAY_HT_OR_STR(value_ht, value_str)
@@ -1262,37 +1264,37 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version)
Z_PARAM_LONG(retries)
ZEND_PARSE_PARAMETERS_END();
- timeout_argument_offset = 10;
- oid_argument_offset = 8;
- type_argument_offset = 9;
- value_argument_offset = 10;
+ timeout_arg_num = 10;
+ oid_arg_num = 8;
+ type_arg_num = 9;
+ value_arg_num = 10;
} else {
/* SNMP_CMD_GET
* SNMP_CMD_GETNEXT
* SNMP_CMD_WALK
*/
ZEND_PARSE_PARAMETERS_START(8, 10)
- Z_PARAM_PATH_STR(a1)
- Z_PARAM_PATH_STR(a2)
- Z_PARAM_STR(a3)
- Z_PARAM_STR(a4)
- Z_PARAM_STR(a5)
- Z_PARAM_STR(a6)
- Z_PARAM_STR(a7)
+ Z_PARAM_PATH_STR(hostname)
+ Z_PARAM_PATH_STR(community_or_security_name)
+ Z_PARAM_STR(security_level)
+ Z_PARAM_STR(auth_protocol)
+ Z_PARAM_STR(auth_passphrase)
+ Z_PARAM_STR(privacy_protocol)
+ Z_PARAM_STR(privacy_passphrase)
Z_PARAM_ARRAY_HT_OR_STR(oid_ht, oid_str)
Z_PARAM_OPTIONAL
Z_PARAM_LONG(timeout)
Z_PARAM_LONG(retries)
ZEND_PARSE_PARAMETERS_END();
- timeout_argument_offset = 9;
- oid_argument_offset = 8;
+ timeout_arg_num = 9;
+ oid_arg_num = 8;
}
} else {
if (st & SNMP_CMD_SET) {
ZEND_PARSE_PARAMETERS_START(5, 7)
- Z_PARAM_PATH_STR(a1)
- Z_PARAM_PATH_STR(a2)
+ Z_PARAM_PATH_STR(hostname)
+ Z_PARAM_PATH_STR(community_or_security_name)
Z_PARAM_ARRAY_HT_OR_STR(oid_ht, oid_str)
Z_PARAM_ARRAY_HT_OR_STR(type_ht, type_str)
Z_PARAM_ARRAY_HT_OR_STR(value_ht, value_str)
@@ -1301,26 +1303,26 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version)
Z_PARAM_LONG(retries)
ZEND_PARSE_PARAMETERS_END();
- timeout_argument_offset = 6;
- oid_argument_offset = 3;
- type_argument_offset = 4;
- value_argument_offset = 5;
+ timeout_arg_num = 6;
+ oid_arg_num = 3;
+ type_arg_num = 4;
+ value_arg_num = 5;
} else {
/* SNMP_CMD_GET
* SNMP_CMD_GETNEXT
* SNMP_CMD_WALK
*/
ZEND_PARSE_PARAMETERS_START(3, 5)
- Z_PARAM_PATH_STR(a1)
- Z_PARAM_PATH_STR(a2)
+ Z_PARAM_PATH_STR(hostname)
+ Z_PARAM_PATH_STR(community_or_security_name)
Z_PARAM_ARRAY_HT_OR_STR(oid_ht, oid_str)
Z_PARAM_OPTIONAL
Z_PARAM_LONG(timeout)
Z_PARAM_LONG(retries)
ZEND_PARSE_PARAMETERS_END();
- timeout_argument_offset = 4;
- oid_argument_offset = 3;
+ timeout_arg_num = 4;
+ oid_arg_num = 3;
}
}
} else {
@@ -1330,8 +1332,8 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version)
Z_PARAM_ARRAY_HT_OR_STR(type_ht, type_str)
Z_PARAM_ARRAY_HT_OR_STR(value_ht, value_str)
ZEND_PARSE_PARAMETERS_END();
- type_argument_offset = 2;
- value_argument_offset = 3;
+ type_arg_num = 2;
+ value_arg_num = 3;
} else if (st & SNMP_CMD_WALK) {
ZEND_PARSE_PARAMETERS_START(1, 4)
Z_PARAM_ARRAY_HT_OR_STR(oid_ht, oid_str)
@@ -1362,17 +1364,17 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version)
}
if (!php_snmp_parse_oid(getThis(), st, &objid_query, oid_str, oid_ht, type_str, type_ht, value_str, value_ht,
- oid_argument_offset, type_argument_offset, value_argument_offset)) {
+ oid_arg_num, type_arg_num, value_arg_num)) {
RETURN_FALSE;
}
if (session_less_mode) {
- if (!snmp_session_init(&session, version, a1, a2, timeout, retries, 1, timeout_argument_offset)) {
+ if (!snmp_session_init(&session, version, hostname, community_or_security_name, timeout, retries, 1, timeout_arg_num)) {
php_free_objid_query(&objid_query, oid_ht, value_ht, st);
snmp_session_free(&session);
RETURN_FALSE;
}
- if (version == SNMP_VERSION_3 && !snmp_session_set_security(session, a3, a4, a5, a6, a7, NULL, NULL, 4, 0)) {
+ if (version == SNMP_VERSION_3 && !snmp_session_set_security(session, security_level, auth_protocol, auth_passphrase, privacy_protocol, privacy_passphrase, NULL, NULL, 4, 0)) {
php_free_objid_query(&objid_query, oid_ht, value_ht, st);
snmp_session_free(&session);
/* An error has already been emitted, just bail out. */
@@ -1729,7 +1731,11 @@ PHP_METHOD(SNMP, setSecurity)
{
php_snmp_object *snmp_object;
zval *object = ZEND_THIS;
- zend_string *a1 = NULL, *a2 = NULL, *a3 = NULL, *a4 = NULL, *a5 = NULL, *a6 = NULL, *a7 = NULL;
+ zend_string *security_level = NULL, *auth_protocol = NULL, *auth_passphrase = NULL;
+ zend_string *privacy_protocol = NULL, *privacy_passphrase = NULL;
+ zend_string *context_name = NULL, *context_engine_id = NULL;
+ uint32_t auth_protocol_arg_num = 2;
+ uint32_t context_engine_id_arg_num = 7;
snmp_object = Z_SNMP_P(object);
if (!snmp_object->session) {
@@ -1737,12 +1743,11 @@ PHP_METHOD(SNMP, setSecurity)
RETURN_THROWS();
}
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "S|SSSSSS", &a1, &a2, &a3, &a4,&a5, &a6, &a7) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "S|SSSSSS", &security_level, &auth_protocol, &auth_passphrase, &privacy_protocol, &privacy_passphrase, &context_name, &context_engine_id) == FAILURE) {
RETURN_THROWS();
}
- /* authProtocol is argument #2 and contextEngineId is argument #7. */
- if (!snmp_session_set_security(snmp_object->session, a1, a2, a3, a4, a5, a6, a7, 2, 7)) {
+ if (!snmp_session_set_security(snmp_object->session, security_level, auth_protocol, auth_passphrase, privacy_protocol, privacy_passphrase, context_name, context_engine_id, auth_protocol_arg_num, context_engine_id_arg_num)) {
/* An error has already been emitted, just bail out. */
RETURN_FALSE;
}