* grub-core/fs/ufs.c (grub_ufs_find_file): Fix handling of double slash.

* grub-core/fs/minix.c (grub_minix_find_file): Likewise.
This commit is contained in:
Vladimir 'phcoder' Serbinenko 2012-05-10 23:33:44 +02:00
parent 8aeb18379b
commit 3244fe96e7
3 changed files with 22 additions and 13 deletions

View file

@ -1,8 +1,13 @@
2012-05-10 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/fs/ufs.c (grub_ufs_find_file): Fix handling of double slash.
* grub-core/fs/minix.c (grub_minix_find_file): Likewise.
2012-05-10 Vladimir Serbinenko <phcoder@gmail.com> 2012-05-10 Vladimir Serbinenko <phcoder@gmail.com>
* util/grub-menulst2cfg.c (main): Check return value of fwrite. * util/grub-menulst2cfg.c (main): Check return value of fwrite.
* util/grub-mklayout.c (write_file): Likewise. New argument fname. * util/grub-mklayout.c (write_file): Likewise. New argument fname.
Allusers updated. All users updated.
2012-05-10 Vladimir Serbinenko <phcoder@gmail.com> 2012-05-10 Vladimir Serbinenko <phcoder@gmail.com>

View file

@ -386,12 +386,10 @@ grub_minix_find_file (struct grub_minix_data *data, const char *path)
grub_strcpy (fpath, path); grub_strcpy (fpath, path);
/* Skip the first slash. */ /* Skip the first slash. */
if (name[0] == '/') while (*name == '/')
{ name++;
name++; if (!*name)
if (!*name) return 0;
return 0;
}
/* Extract the actual part from the pathname. */ /* Extract the actual part from the pathname. */
next = grub_strchr (name, '/'); next = grub_strchr (name, '/');
@ -399,6 +397,8 @@ grub_minix_find_file (struct grub_minix_data *data, const char *path)
{ {
next[0] = '\0'; next[0] = '\0';
next++; next++;
while (*next == '/')
next++;
} }
do do
@ -445,6 +445,8 @@ grub_minix_find_file (struct grub_minix_data *data, const char *path)
{ {
next[0] = '\0'; next[0] = '\0';
next++; next++;
while (*next == '/')
next++;
} }
if ((GRUB_MINIX_INODE_MODE (data) if ((GRUB_MINIX_INODE_MODE (data)

View file

@ -471,12 +471,10 @@ grub_ufs_find_file (struct grub_ufs_data *data, const char *path)
grub_strcpy (fpath, path); grub_strcpy (fpath, path);
/* Skip the first slash. */ /* Skip the first slash. */
if (name[0] == '/') while (*name == '/')
{ name++;
name++; if (!*name)
if (!*name) return 0;
return 0;
}
/* Extract the actual part from the pathname. */ /* Extract the actual part from the pathname. */
next = grub_strchr (name, '/'); next = grub_strchr (name, '/');
@ -484,6 +482,8 @@ grub_ufs_find_file (struct grub_ufs_data *data, const char *path)
{ {
next[0] = '\0'; next[0] = '\0';
next++; next++;
while (*next == '/')
next++;
} }
do do
@ -536,6 +536,8 @@ grub_ufs_find_file (struct grub_ufs_data *data, const char *path)
{ {
next[0] = '\0'; next[0] = '\0';
next++; next++;
while (*next == '/')
next++;
} }
if ((INODE_MODE(data) & GRUB_UFS_ATTR_TYPE) != GRUB_UFS_ATTR_DIR) if ((INODE_MODE(data) & GRUB_UFS_ATTR_TYPE) != GRUB_UFS_ATTR_DIR)