mirror of
https://github.com/php/php-src.git
synced 2026-04-08 00:22:52 +02:00
MFH: apply workaround for the leak only when GLIBC is used
This commit is contained in:
@@ -366,6 +366,9 @@ typedef union {
|
||||
* res_thread_freeres() in glibc/resolv/res_init.c
|
||||
* __libc_res_nsend() in resolv/res_send.c
|
||||
* */
|
||||
|
||||
#ifdef __GLIBC__
|
||||
#define php_dns_free_res(__res__) _php_dns_free_res(__res__)
|
||||
static void _php_dns_free_res(struct __res_state res) { /* {{{ */
|
||||
int ns;
|
||||
for (ns = 0; ns < MAXNS; ns++) {
|
||||
@@ -375,6 +378,9 @@ static void _php_dns_free_res(struct __res_state res) { /* {{{ */
|
||||
}
|
||||
}
|
||||
} /* }}} */
|
||||
#else
|
||||
#define php_dns_free_res(__res__)
|
||||
#endif
|
||||
|
||||
/* {{{ php_parserr */
|
||||
static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int store, zval **subarray)
|
||||
@@ -763,7 +769,7 @@ PHP_FUNCTION(dns_get_record)
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "res_nmkquery() failed");
|
||||
zval_dtor(return_value);
|
||||
res_nclose(&res);
|
||||
_php_dns_free_res(res);
|
||||
php_dns_free_res(res);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
n = res_nsend(&res, buf.qb2, n, answer.qb2, sizeof answer);
|
||||
@@ -771,7 +777,7 @@ PHP_FUNCTION(dns_get_record)
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "res_nsend() failed");
|
||||
zval_dtor(return_value);
|
||||
res_nclose(&res);
|
||||
_php_dns_free_res(res);
|
||||
php_dns_free_res(res);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
@@ -790,7 +796,7 @@ PHP_FUNCTION(dns_get_record)
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse DNS data received");
|
||||
zval_dtor(return_value);
|
||||
res_nclose(&res);
|
||||
_php_dns_free_res(res);
|
||||
php_dns_free_res(res);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
cp += n + QFIXEDSZ;
|
||||
@@ -806,7 +812,7 @@ PHP_FUNCTION(dns_get_record)
|
||||
}
|
||||
}
|
||||
res_nclose(&res);
|
||||
_php_dns_free_res(res);
|
||||
php_dns_free_res(res);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user