mirror of
https://git.savannah.gnu.org/git/tar.git
synced 2026-05-31 20:26:22 +00:00
(extract_mangle): Check for overflow when converting off_t to size_t.
Use off_t, size_t when appropriate. Remove now-useless casts.
This commit is contained in:
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user