63
63
#include "dns.h"
64
64
/* }}} */
65
65
66
- char * php_gethostbyaddr (char * ip );
67
- char * php_gethostbyname (char * name );
66
+ static char * php_gethostbyaddr (char * ip );
67
+ static char * php_gethostbyname (char * name );
68
68
69
69
/* {{{ proto string gethostbyaddr(string ip_address)
70
70
Get the Internet host name corresponding to a given IP address */
71
71
PHP_FUNCTION (gethostbyaddr )
72
72
{
73
- pval * * arg ;
73
+ zval * * arg ;
74
+ char * addr ;
74
75
75
76
if (ZEND_NUM_ARGS () != 1 || zend_get_parameters_ex (1 , & arg ) == FAILURE ) {
76
- WRONG_PARAM_COUNT ;
77
+ ZEND_WRONG_PARAM_COUNT () ;
77
78
}
79
+
78
80
convert_to_string_ex (arg );
81
+
82
+ addr = php_gethostbyaddr (Z_STRVAL_PP (arg ));
79
83
80
- RETVAL_STRING (php_gethostbyaddr (Z_STRVAL_PP (arg )), 0 );
84
+ if (addr == NULL ) {
85
+ php_error (E_WARNING , "Address is not in a.b.c.d form" );
86
+ RETVAL_FALSE ;
87
+ } else {
88
+ RETVAL_STRING (addr , 0 );
89
+ }
81
90
}
82
91
/* }}} */
83
92
84
93
/* {{{ php_gethostbyaddr
85
94
*/
86
- char * php_gethostbyaddr (char * ip )
95
+ static char * php_gethostbyaddr (char * ip )
87
96
{
88
97
struct in_addr addr ;
89
98
struct hostent * hp ;
90
99
91
100
addr .s_addr = inet_addr (ip );
101
+
92
102
if (addr .s_addr == -1 ) {
93
- #if PHP_DEBUG
94
- php_error (E_WARNING , "address not in a.b.c.d form" );
95
- #endif
96
- return estrdup (ip );
103
+ return NULL ;
97
104
}
105
+
98
106
hp = gethostbyaddr ((char * ) & addr , sizeof (addr ), AF_INET );
107
+
99
108
if (!hp ) {
100
- #if PHP_DEBUG
101
- php_error (E_WARNING , "Unable to resolve %s\n" , ip );
102
- #endif
103
109
return estrdup (ip );
104
110
}
111
+
105
112
return estrdup (hp -> h_name );
106
113
}
107
114
/* }}} */
@@ -110,11 +117,12 @@ char *php_gethostbyaddr(char *ip)
110
117
Get the IP address corresponding to a given Internet host name */
111
118
PHP_FUNCTION (gethostbyname )
112
119
{
113
- pval * * arg ;
120
+ zval * * arg ;
114
121
115
122
if (ZEND_NUM_ARGS () != 1 || zend_get_parameters_ex (1 , & arg ) == FAILURE ) {
116
- WRONG_PARAM_COUNT ;
123
+ ZEND_WRONG_PARAM_COUNT () ;
117
124
}
125
+
118
126
convert_to_string_ex (arg );
119
127
120
128
RETVAL_STRING (php_gethostbyname (Z_STRVAL_PP (arg )), 0 );
@@ -125,13 +133,13 @@ PHP_FUNCTION(gethostbyname)
125
133
Return a list of IP addresses that a given hostname resolves to. */
126
134
PHP_FUNCTION (gethostbynamel )
127
135
{
128
- pval * * arg ;
136
+ zval * * arg ;
129
137
struct hostent * hp ;
130
138
struct in_addr in ;
131
139
int i ;
132
140
133
141
if (ZEND_NUM_ARGS () != 1 || zend_get_parameters_ex (1 , & arg ) == FAILURE ) {
134
- WRONG_PARAM_COUNT ;
142
+ ZEND_WRONG_PARAM_COUNT () ;
135
143
}
136
144
convert_to_string_ex (arg );
137
145
@@ -141,36 +149,31 @@ PHP_FUNCTION(gethostbynamel)
141
149
142
150
hp = gethostbyname (Z_STRVAL_PP (arg ));
143
151
if (hp == NULL || hp -> h_addr_list == NULL ) {
144
- #if PHP_DEBUG
145
- php_error (E_WARNING , "Unable to resolve %s\n" , Z_STRVAL_PP (arg ));
146
- #endif
147
- return ;
152
+ RETURN_FALSE ;
148
153
}
149
154
150
155
for (i = 0 ; hp -> h_addr_list [i ] != 0 ; i ++ ) {
151
156
in = * (struct in_addr * ) hp -> h_addr_list [i ];
152
157
add_next_index_string (return_value , inet_ntoa (in ), 1 );
153
158
}
154
-
155
- return ;
156
159
}
157
160
/* }}} */
158
161
159
162
/* {{{ php_gethostbyname
160
163
*/
161
- char * php_gethostbyname (char * name )
164
+ static char * php_gethostbyname (char * name )
162
165
{
163
166
struct hostent * hp ;
164
167
struct in_addr in ;
165
168
166
169
hp = gethostbyname (name );
170
+
167
171
if (!hp || !hp -> h_addr_list ) {
168
- #if PHP_DEBUG
169
- php_error (E_WARNING , "Unable to resolve %s\n" , name );
170
- #endif
171
172
return estrdup (name );
172
173
}
174
+
173
175
memcpy (& in .s_addr , * (hp -> h_addr_list ), sizeof (in .s_addr ));
176
+
174
177
return estrdup (inet_ntoa (in ));
175
178
}
176
179
/* }}} */
@@ -181,7 +184,7 @@ char *php_gethostbyname(char *name)
181
184
Check DNS records corresponding to a given Internet host name or IP address */
182
185
PHP_FUNCTION (checkdnsrr )
183
186
{
184
- pval * * arg1 ,* * arg2 ;
187
+ zval * * arg1 ,* * arg2 ;
185
188
int type ,i ;
186
189
#ifndef MAXPACKET
187
190
#define MAXPACKET 8192 /* max packet size used internally by BIND */
0 commit comments