mirror of
https://github.com/php/php-src.git
synced 2025-08-19 08:49:28 +02:00
MFH:
- Improved fix for #47035 (win32 part by Henrique M. Decaria) [DOC] The TXT part needs be returned as an array of strings. (dns_get_record())
This commit is contained in:
parent
c87d6031e5
commit
cc50663b56
2 changed files with 23 additions and 15 deletions
|
@ -456,20 +456,29 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int
|
|||
break;
|
||||
case DNS_T_TXT:
|
||||
{
|
||||
zval *txtarray = NULL;
|
||||
int ll = 0;
|
||||
char *txt = NULL;
|
||||
|
||||
add_assoc_string(*subarray, "type", "TXT", 1);
|
||||
tp = emalloc(dlen + 1);
|
||||
|
||||
MAKE_STD_ZVAL(txtarray);
|
||||
array_init(txtarray);
|
||||
|
||||
while (ll < dlen) {
|
||||
txt = tp + ll;
|
||||
n = cp[ll];
|
||||
memcpy(tp + ll , cp + ll + 1, n);
|
||||
memcpy(txt, cp + ll + 1, n);
|
||||
ll = ll + n + 1;
|
||||
tp[ll] = '\0';
|
||||
add_next_index_stringl(txtarray, txt, n, 1);
|
||||
}
|
||||
tp[dlen] = '\0';
|
||||
|
||||
cp += dlen;
|
||||
|
||||
add_assoc_stringl(*subarray, "txt", tp, dlen - 1, 0);
|
||||
add_assoc_zval(*subarray, "txt", txtarray);
|
||||
efree(tp);
|
||||
}
|
||||
break;
|
||||
case DNS_T_SOA:
|
||||
|
|
|
@ -194,25 +194,24 @@ static void php_parserr(PDNS_RECORD pRec, int type_to_fetch, int store, zval **s
|
|||
int i = 0;
|
||||
DNS_TXT_DATA *data_txt = &pRec->Data.TXT;
|
||||
DWORD count = data_txt->dwStringCount;
|
||||
char *txt, *txt_dst;
|
||||
char *txt;
|
||||
long txt_len;
|
||||
zval *txtarray;
|
||||
|
||||
MAKE_STD_ZVAL(txtarray);
|
||||
array_init(txtarray);
|
||||
|
||||
add_assoc_string(*subarray, "type", "TXT", 1);
|
||||
|
||||
txt_len = 0;
|
||||
for (i = 0; i < count; i++) {
|
||||
txt_len += strlen(data_txt->pStringArray[i]) + 1;
|
||||
txt_len = strlen(data_txt->pStringArray[i]);
|
||||
txt = emalloc(txt_len + 1);
|
||||
memcpy(txt, data_txt->pStringArray[i], txt_len);
|
||||
txt[txt_len] = '\0';
|
||||
add_next_index_stringl(txtarray, txt, txt_len, 0);
|
||||
}
|
||||
|
||||
txt = ecalloc(txt_len * 2, 1);
|
||||
txt_dst = txt;
|
||||
for (i = 0; i < count; i++) {
|
||||
int len = strlen(data_txt->pStringArray[i]);
|
||||
memcpy(txt_dst, data_txt->pStringArray[i], len);
|
||||
txt_dst += len;
|
||||
}
|
||||
|
||||
add_assoc_string(*subarray, "txt", txt, 0);
|
||||
add_assoc_zval(*subarray, "txt", txtarray);
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue