Windows: Handle absolute paths in safe_create_leading_directories().
In this function we must be careful to handle drive-local paths else there is a danger that it runs into an infinite loop. Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
This commit is contained in:
parent
25fe217b86
commit
8385abfda5
12
sha1_file.c
12
sha1_file.c
@ -83,14 +83,18 @@ int get_sha1_hex(const char *hex, unsigned char *sha1)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int offset_1st_component(const char *path)
|
||||
{
|
||||
if (has_dos_drive_prefix(path))
|
||||
return 2 + (path[2] == '/');
|
||||
return *path == '/';
|
||||
}
|
||||
|
||||
int safe_create_leading_directories(char *path)
|
||||
{
|
||||
char *pos = path;
|
||||
char *pos = path + offset_1st_component(path);
|
||||
struct stat st;
|
||||
|
||||
if (is_absolute_path(path))
|
||||
pos++;
|
||||
|
||||
while (pos) {
|
||||
pos = strchr(pos, '/');
|
||||
if (!pos)
|
||||
|
Loading…
Reference in New Issue
Block a user