Browse Source

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>
maint
Johannes Sixt 18 years ago
parent
commit
8385abfda5
  1. 12
      sha1_file.c

12
sha1_file.c

@ -83,14 +83,18 @@ int get_sha1_hex(const char *hex, unsigned char *sha1) @@ -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…
Cancel
Save