diff options
Diffstat (limited to 'ext/standard/dns.c')
-rw-r--r-- | ext/standard/dns.c | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/ext/standard/dns.c b/ext/standard/dns.c index f0276b6081..39412adc86 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -446,22 +446,13 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int cp += n; break; case DNS_T_TXT: - { - int ll = 0; - - add_assoc_string(*subarray, "type", "TXT", 1); - 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_assoc_stringl(*subarray, "txt", tp, dlen, 0); - } + add_assoc_string(*subarray, "type", "TXT", 1); + n = cp[0]; + tp = emalloc(n + 1); + memcpy(tp, cp + 1, n); + tp[n] = '\0'; + cp += dlen; + add_assoc_stringl(*subarray, "txt", (char*)tp, n, 0); break; case DNS_T_SOA: add_assoc_string(*subarray, "type", "SOA", 1); |