From 46096f5c9dc6f02bd443f574c541418ceeb7cad5 Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Mon, 3 Nov 2008 11:33:32 +0000 Subject: [PATCH] - Fixed bug #42855 (dns_get_record() doesn't return all text from TXT record) patch by: misc at e2007 dot cynergi dot com --- ext/standard/dns.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/ext/standard/dns.c b/ext/standard/dns.c index 16aa034bbe..d48f8ec6be 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -446,13 +446,22 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int cp += n; break; case DNS_T_TXT: - add_ascii_assoc_rt_string(*subarray, "type", "TXT", ZSTR_DUPLICATE); - n = cp[0]; - tp = emalloc(n + 1); - memcpy(tp, cp + 1, n); - tp[n] = '\0'; - cp += dlen; - add_ascii_assoc_rt_stringl(*subarray, "txt", (char*)tp, n, ZSTR_AUTOFREE); + { + int ll = 0; + + add_ascii_assoc_rt_string(*subarray, "type", "TXT", ZSTR_DUPLICATE); + tp = emalloc(dlen + 1); + + while (ll < dlen) { + n = cp[ll]; + memcpy(tp + ll , cp + ll + 1, n); + ll = ll + n + 1; + } + tp[dlen] = '\0'; + cp += dlen; + + add_ascii_assoc_rt_stringl(*subarray, "txt", tp, dlen, ZSTR_AUTOFREE); + } break; case DNS_T_SOA: add_ascii_assoc_rt_string(*subarray, "type", "SOA", ZSTR_DUPLICATE); -- 2.50.1