diff --git a/NEWS b/NEWS index 90a1b71496c..a02cf6e2dba 100644 --- a/NEWS +++ b/NEWS @@ -18,6 +18,7 @@ PHP NEWS - Standard: . Fixed bug #71542 (disk_total_space does not work with relative paths). (cmb) + . Fixed bug #81400 (Unterminated string in dns_get_record() results). (cmb) - SysVMsg: . Fixed bug #78819 (Heap Overflow in msg_send). (cmb) diff --git a/ext/standard/dns_win32.c b/ext/standard/dns_win32.c index b5eb1e06214..466d927ea3e 100644 --- a/ext/standard/dns_win32.c +++ b/ext/standard/dns_win32.c @@ -223,18 +223,18 @@ static void php_parserr(PDNS_RECORD pRec, int type_to_fetch, int store, int raw, array_init(&entries); for (i = 0; i < count; i++) { - txt_len += strlen(data_txt->pStringArray[i]) + 1; + txt_len += strlen(data_txt->pStringArray[i]); } - txt = zend_string_safe_alloc(txt_len, 2, 0, 0); - txt_dst = txt->val; + txt = zend_string_alloc(txt_len, 0); + txt_dst = ZSTR_VAL(txt); for (i = 0; i < count; i++) { size_t len = strlen(data_txt->pStringArray[i]); memcpy(txt_dst, data_txt->pStringArray[i], len); add_next_index_stringl(&entries, data_txt->pStringArray[i], len); txt_dst += len; } - txt->len = txt_dst - txt->val; + *txt_dst = '\0'; add_assoc_str(subarray, "txt", txt); add_assoc_zval(subarray, "entries", &entries); }