]> Dogcows Code - chaz/tar/commitdiff
(extract_mangle): Check for overflow when converting off_t to size_t.
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 31 Oct 1997 00:58:55 +0000 (00:58 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 31 Oct 1997 00:58:55 +0000 (00:58 +0000)
Use off_t, size_t when appropriate.  Remove now-useless casts.

src/mangle.c

index 03377dc66df0f96fe279a8ccffb64b8e1e805f3d..a57b5c23c6f38a2f9319cf7d51cf086f4cae1d0f 100644 (file)
@@ -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));
This page took 0.026527 seconds and 4 git commands to generate.