summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSara Golemon <pollita@php.net>2004-03-19 21:42:29 +0000
committerSara Golemon <pollita@php.net>2004-03-19 21:42:29 +0000
commit75268270d68fb7f2f1b570d61ed65fd1cdb446d3 (patch)
tree2b7e21ccd56d95770598713287d73fe60ca25ee4
parentdd5d497541f70d671a40c08a53cfa298986ae8db (diff)
downloadphp-git-75268270d68fb7f2f1b570d61ed65fd1cdb446d3.tar.gz
Bug Fix #27657: TXT records longer than MAXHOSTNAMELEN cause segfaults.
-rw-r--r--ext/standard/dns.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/ext/standard/dns.c b/ext/standard/dns.c
index 5959e991a5..70c93d3cc6 100644
--- a/ext/standard/dns.c
+++ b/ext/standard/dns.c
@@ -400,12 +400,14 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int
break;
case T_TXT:
add_assoc_string(*subarray, "type", "TXT", 1);
- n = cp[0];
- for(i=1; i<=n; i++)
- name[i-1] = cp[i];
- name[i-1] = '\0';
+ n = cp[0];
+ tp = emalloc(n + 1);
+ for(i=1; i<=n; i++) {
+ tp[i-1] = cp[i];
+ }
+ tp[i-1] = '\0';
cp += dlen;
- add_assoc_string(*subarray, "txt", name, 1);
+ add_assoc_stringl(*subarray, "txt", tp, n, 0);
break;
case T_SOA:
add_assoc_string(*subarray, "type", "SOA", 1);