From 4c414c12a3325eeb6d34d1cb5d65e5bf42700415 Mon Sep 17 00:00:00 2001 From: Boris Lytochkin Date: Fri, 13 Jan 2012 18:46:56 +0000 Subject: [PATCH] merge from trunk: Fixed bug #60585 (php build fails with USE flag snmp when IPv6 support is disabled Fixed bug #60749 (SNMP module should not strip non-standard SNMP port from hostname --- NEWS | 6 ++++++ ext/snmp/snmp.c | 10 ++++++++-- ext/snmp/tests/bug60749.phpt | 28 ++++++++++++++++++++++++++++ ext/snmp/tests/ipv6.phpt | 9 +++++---- 4 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 ext/snmp/tests/bug60749.phpt diff --git a/NEWS b/NEWS index bbb6334b2c..804f6d3226 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,12 @@ PHP NEWS . Fixed bug #53280 (segfaults if query column count less than param count). (Mariuz) +- SNMP: + . Fixed bug #60585 (php build fails with USE flag snmp when IPv6 support + is disabled). (Boris Lytochkin) + . Fixed bug #60749 (SNMP module should not strip non-standard SNMP port + from hostname). (Boris Lytochkin) + 07 Jan 2012, PHP 5.4.0 RC5 - Core: . Fixed bug #60613 (Segmentation fault with $cls->{expr}() syntax). (Dmitry) diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c index eb833c37d3..403c629559 100644 --- a/ext/snmp/snmp.c +++ b/ext/snmp/snmp.c @@ -1171,11 +1171,11 @@ static int netsnmp_session_init(php_snmp_session **session_p, int version, char continue; } #else - if (res->sa_family != AF_INET) { + if ((*res)->sa_family != AF_INET) { res++; continue; } - strcat(pptr, inet_ntoa(res)); + strcat(pptr, inet_ntoa(((struct sockaddr_in*)(*res))->sin_addr)); #endif break; } @@ -1188,6 +1188,12 @@ static int netsnmp_session_init(php_snmp_session **session_p, int version, char There should be check for non-empty session->peername! */ + /* put back non-standard SNMP port */ + if (session->remote_port != SNMP_PORT) { + pptr = session->peername + strlen(session->peername); + sprintf(pptr, ":%d", session->remote_port); + } + php_network_freeaddresses(psal); if (version == SNMP_VERSION_3) { diff --git a/ext/snmp/tests/bug60749.phpt b/ext/snmp/tests/bug60749.phpt new file mode 100644 index 0000000000..302f351c10 --- /dev/null +++ b/ext/snmp/tests/bug60749.phpt @@ -0,0 +1,28 @@ +--TEST-- +Bug #60749: SNMP module should not strip non-standard SNMP port from hostname +--CREDITS-- +Boris Lytochkin +--SKIPIF-- + +--FILE-- +info; +if (strcmp($info["hostname"], "$ip:$port") !== 0) { + echo "'" . $info["hostname"] . "' != '$ip:$port'\n"; +} +var_dump($session->close()); +?> +--EXPECTF-- +bool(true) diff --git a/ext/snmp/tests/ipv6.phpt b/ext/snmp/tests/ipv6.phpt index 78119d1575..12879416c6 100644 --- a/ext/snmp/tests/ipv6.phpt +++ b/ext/snmp/tests/ipv6.phpt @@ -4,16 +4,17 @@ IPv6 support Boris Lytochkin --SKIPIF-- --FILE--