Procházet zdrojové kódy

(extract_mangle): Check for overflow when converting off_t to size_t.
Use off_t, size_t when appropriate. Remove now-useless casts.

Paul Eggert před 27 roky
rodič
revize
f2bad2db48
1 změnil soubory, kde provedl 6 přidání a 3 odebrání
  1. 6 3
      src/mangle.c

+ 6 - 3
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));