@@ -832,7 +832,7 @@ static bool php_snmp_parse_oid(
832
832
/* {{{ snmp_session_init
833
833
allocates memory for session and session->peername, caller should free it manually using session_free() and efree()
834
834
*/
835
- static bool snmp_session_init (php_snmp_session * * session_p , int version , zend_string * hostname , zend_string * community , int timeout , int retries )
835
+ static bool snmp_session_init (php_snmp_session * * session_p , int version , zend_string * hostname , zend_string * community , zend_long timeout , zend_long retries )
836
836
{
837
837
php_snmp_session * session ;
838
838
char * pptr , * host_ptr ;
@@ -841,11 +841,23 @@ static bool snmp_session_init(php_snmp_session **session_p, int version, zend_st
841
841
struct sockaddr * * psal ;
842
842
struct sockaddr * * res ;
843
843
844
+ * session_p = 0 ;
845
+
844
846
if (ZSTR_LEN (hostname ) >= MAX_NAME_LEN ) {
845
847
zend_value_error ("hostname length must be lower than %d" , MAX_NAME_LEN );
846
848
return false;
847
849
}
848
850
851
+ if (timeout < -1 || timeout > LONG_MAX ) {
852
+ zend_value_error ("timeout must be between -1 and %ld" , LONG_MAX );
853
+ return false;
854
+ }
855
+
856
+ if (retries < -1 || retries > INT_MAX ) {
857
+ zend_value_error ("retries must be between -1 and %d" , INT_MAX );
858
+ return false;
859
+ }
860
+
849
861
// TODO: Do not strip and re-add the port in peername?
850
862
unsigned short remote_port = SNMP_PORT ;
851
863
int tmp_port ;
@@ -856,7 +868,7 @@ static bool snmp_session_init(php_snmp_session **session_p, int version, zend_st
856
868
857
869
snmp_sess_init (session );
858
870
859
- session -> version = version ;
871
+ session -> version = ( long ) version ;
860
872
861
873
session -> peername = emalloc (MAX_NAME_LEN );
862
874
/* we copy original hostname for further processing */
@@ -954,8 +966,8 @@ static bool snmp_session_init(php_snmp_session **session_p, int version, zend_st
954
966
session -> community_len = ZSTR_LEN (community );
955
967
}
956
968
957
- session -> retries = retries ;
958
- session -> timeout = timeout ;
969
+ session -> retries = ( int ) retries ;
970
+ session -> timeout = ( long ) timeout ;
959
971
return true;
960
972
}
961
973
/* }}} */
0 commit comments