summaryrefslogtreecommitdiff
path: root/ext/standard/dns.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/dns.c')
-rw-r--r--ext/standard/dns.c23
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);