From: Paul Eggert Date: Fri, 31 Oct 1997 00:58:55 +0000 (+0000) Subject: (extract_mangle): Check for overflow when converting off_t to size_t. X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=f2bad2db4833dee287931103007018d0c4368192;p=chaz%2Ftar (extract_mangle): Check for overflow when converting off_t to size_t. Use off_t, size_t when appropriate. Remove now-useless casts. --- diff --git a/src/mangle.c b/src/mangle.c index 03377dc..a57b5c2 100644 --- a/src/mangle.c +++ b/src/mangle.c @@ -44,17 +44,20 @@ int mangled_num = 0; void extract_mangle (void) { - int size = current_stat.st_size; + off_t size = current_stat.st_size; char *buffer = xmalloc ((size_t) (size + 1)); char *copy = buffer; char *cursor = buffer; + if (size != (size_t) size || size == (size_t) -1) + FATAL_ERROR ((0, 0, _("Memory exhausted"))); + buffer[size] = '\0'; while (size > 0) { union block *block = find_next_block (); - int available; + size_t available; if (!block) { @@ -64,7 +67,7 @@ extract_mangle (void) available = available_space_after (block); if (available > size) available = size; - memcpy (copy, block->buffer, (size_t) available); + memcpy (copy, block->buffer, available); copy += available; size -= available; set_next_block_after ((union block *) (block->buffer + available - 1));