From: Paul Eggert Date: Tue, 30 Jul 2024 23:21:39 +0000 (-0700) Subject: Cleaner overflow checking in xheader_read X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=927d67855e2e83b6b06eb9095f65e4e695d6af7e;p=thirdparty%2Ftar.git Cleaner overflow checking in xheader_read * src/xheader.c (xheader_read): Prefer ckd_add to doing overflow checking by hand. --- diff --git a/src/xheader.c b/src/xheader.c index e2b124b8..96762c34 100644 --- a/src/xheader.c +++ b/src/xheader.c @@ -783,12 +783,13 @@ xheader_read (struct xheader *xhdr, union block *p, off_t size) if (size < 0) size = 0; /* Already diagnosed. */ - if (SIZE_MAX - BLOCKSIZE <= size) + size_t size_plus_1; + if (ckd_add (&size_plus_1, size, BLOCKSIZE + 1)) xalloc_die (); + size = size_plus_1 - 1; - size += BLOCKSIZE; xhdr->size = size; - xhdr->buffer = xmalloc (size + 1); + xhdr->buffer = xmalloc (size_plus_1); xhdr->buffer[size] = '\0'; do