util/grub-install-common: Confirm directory creation in grub_install_mkdir_p()
Because grub_util_mkdir() is implemented to not return a value on any platform, grub_instal_mkdir_p() can test for success by confirming that the directory requested exists after attempting to create it, otherwise it should fail with an error and exit. While fixing this, a flaw in the logic was shown, where the first match of the path separator, which almost always was the first character in the path (e.g. /boot/grub2) would result in creating a directory with an empty name (i.e. ""). To avoid that, it should skip the handling of the path separator where p is pointing to the first character. Signed-off-by: Darren Kenny <darren.kenny@oracle.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
d22cbe0dec
commit
2669f98643
@ -173,15 +173,20 @@ grub_install_mkdir_p (const char *dst)
|
||||
char *p;
|
||||
for (p = t; *p; p++)
|
||||
{
|
||||
if (is_path_separator (*p))
|
||||
if (is_path_separator (*p) && p != t)
|
||||
{
|
||||
char s = *p;
|
||||
*p = '\0';
|
||||
grub_util_mkdir (t);
|
||||
if (!grub_util_is_directory (t))
|
||||
grub_util_error (_("failed to make directory: '%s'"), t);
|
||||
|
||||
*p = s;
|
||||
}
|
||||
}
|
||||
grub_util_mkdir (t);
|
||||
if (!grub_util_is_directory (t))
|
||||
grub_util_error (_("failed to make directory: '%s'"), t);
|
||||
free (t);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user