From 927d67855e2e83b6b06eb9095f65e4e695d6af7e Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 30 Jul 2024 16:21:39 -0700 Subject: [PATCH] Cleaner overflow checking in xheader_read * src/xheader.c (xheader_read): Prefer ckd_add to doing overflow checking by hand. --- src/xheader.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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