]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/fs/udf.c (read_string): Macroify GRUB_MAX_UTF8_PER_UTF16.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 13 Dec 2011 00:41:16 +0000 (01:41 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 13 Dec 2011 00:41:16 +0000 (01:41 +0100)
* grub-core/fs/jfs.c (grub_jfs_diropen): Likewise.
* grub-core/fs/fat.c (grub_fat_iterate_dir): Likewise.

ChangeLog
grub-core/fs/fat.c
grub-core/fs/jfs.c
grub-core/fs/udf.c

index 088f6f848152c9956b2a98ad1a8c1a3d5c54f90f..0780a3691e6c06898fd481ca547882d82151b1e8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/fs/udf.c (read_string): Macroify GRUB_MAX_UTF8_PER_UTF16.
+       * grub-core/fs/jfs.c (grub_jfs_diropen): Likewise.
+       * grub-core/fs/fat.c (grub_fat_iterate_dir): Likewise.
+
 2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/term/at_keyboard.c (set_scancodes): Fix preprocessor
index 0d32e229d0835d9a0844ab724617afb491579ddb..0569120fb7d55837f63c661bf6f19f4a0377b11c 100644 (file)
@@ -589,7 +589,7 @@ grub_fat_iterate_dir (grub_disk_t disk, struct grub_fat_data *data,
   char *filename;
 
   unibuf = grub_malloc (15 * 256 * 2);
-  filename = grub_malloc (15 * 256 * 4 + 1);
+  filename = grub_malloc (15 * 256 * GRUB_MAX_UTF8_PER_UTF16 + 1);
 
   while (1)
     {
@@ -696,7 +696,7 @@ grub_fat_iterate_dir (grub_disk_t disk, struct grub_fat_data *data,
     return grub_error (GRUB_ERR_BAD_FILE_TYPE, "not a directory");
 
   /* Allocate space enough to hold a long name.  */
-  filename = grub_malloc (0x40 * 13 * 4 + 1);
+  filename = grub_malloc (0x40 * 13 * GRUB_MAX_UTF8_PER_UTF16 + 1);
   unibuf = (grub_uint16_t *) grub_malloc (0x40 * 13 * 2);
   if (! filename || ! unibuf)
     {
index 91497f1431d94cb4bdb321881478321284def0ed..3554803cb31bf8481f5bfd07f9cd43060c32bf8c 100644 (file)
@@ -241,7 +241,7 @@ struct grub_jfs_diropen
   /* On-disk name is at most 255 UTF-16 codepoints.
      Every UTF-16 codepoint is at most 4 UTF-8 bytes.
    */
-  char name[256 * 4 + 1];
+  char name[256 * GRUB_MAX_UTF8_PER_UTF16 + 1];
   grub_uint32_t ino;
 } __attribute__ ((packed));
 
index e1f1150153bfab96fe94e210cb349f3fb86a562e..4097fd2e6c7dc21385eea841c9c467047fe1f9f4 100644 (file)
@@ -820,7 +820,7 @@ read_string (grub_uint8_t *raw, grub_size_t sz)
       for (i = 0; i < utf16len; i++)
        utf16[i] = (raw[2 * i + 1] << 8) | raw[2*i + 2];
     }
-  ret = grub_malloc (utf16len * 3 + 1);
+  ret = grub_malloc (utf16len * GRUB_MAX_UTF8_PER_UTF16 + 1);
   if (ret)
     *grub_utf16_to_utf8 ((grub_uint8_t *) ret, utf16, utf16len) = '\0';
   grub_free (utf16);