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>
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);
}