mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-03 16:15:27 +00:00
don't use strlcat with non NUL terminated strings rt45981_stage3
This commit is contained in:
@@ -252,8 +252,8 @@ maybe_numeric(unsigned int *valuep, isc_textregion_t *source,
|
|||||||
* isc_parse_uint32(). isc_parse_uint32() requires
|
* isc_parse_uint32(). isc_parse_uint32() requires
|
||||||
* null termination, so we must make a copy.
|
* null termination, so we must make a copy.
|
||||||
*/
|
*/
|
||||||
strlcpy(buffer, source->base,
|
snprintf(buffer, sizeof(buffer), "%.*s",
|
||||||
ISC_MIN(source->length + 1, sizeof(buffer)));
|
(int)source->length, source->base);
|
||||||
|
|
||||||
INSIST(buffer[source->length] == '\0');
|
INSIST(buffer[source->length] == '\0');
|
||||||
|
|
||||||
@@ -508,8 +508,8 @@ dns_rdataclass_fromtext(dns_rdataclass_t *classp, isc_textregion_t *source) {
|
|||||||
* source->base is not required to be NUL terminated.
|
* source->base is not required to be NUL terminated.
|
||||||
* Copy up to remaining bytes and NUL terminate.
|
* Copy up to remaining bytes and NUL terminate.
|
||||||
*/
|
*/
|
||||||
strlcpy(buf, source->base + 5,
|
snprintf(buf, sizeof(buf), "%.*s",
|
||||||
ISC_MIN(source->length - 5 + 1, sizeof(buf)));
|
(int)(source->length - 5), source->base + 5);
|
||||||
val = strtoul(buf, &endp, 10);
|
val = strtoul(buf, &endp, 10);
|
||||||
if (*endp == '\0' && val <= 0xffff) {
|
if (*endp == '\0' && val <= 0xffff) {
|
||||||
*classp = (dns_rdataclass_t)val;
|
*classp = (dns_rdataclass_t)val;
|
||||||
|
@@ -1343,8 +1343,8 @@ dns_rdatatype_fromtext(dns_rdatatype_t *typep, isc_textregion_t *source) {
|
|||||||
* source->base is not required to be NUL terminated.
|
* source->base is not required to be NUL terminated.
|
||||||
* Copy up to remaining bytes and NUL terminate.
|
* Copy up to remaining bytes and NUL terminate.
|
||||||
*/
|
*/
|
||||||
strlcpy(buf, source->base + 4,
|
snprintf(buf, sizeof(buf), "%.*s",
|
||||||
ISC_MIN(source->length - 4 + 1, sizeof(buf)));
|
(int)(source->length - 4), source->base + 4);
|
||||||
val = strtoul(buf, &endp, 10);
|
val = strtoul(buf, &endp, 10);
|
||||||
if (*endp == '\0' && val <= 0xffff) {
|
if (*endp == '\0' && val <= 0xffff) {
|
||||||
*typep = (dns_rdatatype_t)val;
|
*typep = (dns_rdatatype_t)val;
|
||||||
|
@@ -160,7 +160,7 @@ bind_ttl(isc_textregion_t *source, isc_uint32_t *ttl) {
|
|||||||
if (source->length > sizeof(buf) - 1)
|
if (source->length > sizeof(buf) - 1)
|
||||||
return (DNS_R_SYNTAX);
|
return (DNS_R_SYNTAX);
|
||||||
/* Copy source->length bytes and NUL terminate. */
|
/* Copy source->length bytes and NUL terminate. */
|
||||||
strlcpy(buf, source->base, ISC_MIN(source->length + 1, sizeof(buf)));
|
snprintf(buf, sizeof(buf), "%.*s", (int)source->length, source->base);
|
||||||
s = buf;
|
s = buf;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
Reference in New Issue
Block a user