daemon: do not forbid user relative paths unconditionally under --base-path

Using base-path to relocate the server public space does not
have anything to do with allowing or forbidding user relative
paths.

Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Junio C Hamano 2006-02-03 23:50:55 -08:00
parent df9892ffce
commit 363f24c936
1 changed files with 8 additions and 4 deletions

View File

@ -145,13 +145,17 @@ static char *path_ok(char *dir)


if (base_path) { if (base_path) {
static char rpath[PATH_MAX]; static char rpath[PATH_MAX];
if (*dir != '/') { if (!strict_paths && *dir == '~')
/* Forbid possible base-path evasion using ~paths. */ ; /* allow user relative paths */
else if (*dir != '/') {
/* otherwise allow only absolute */
logerror("'%s': Non-absolute path denied (base-path active)", dir); logerror("'%s': Non-absolute path denied (base-path active)", dir);
return NULL; return NULL;
} }
snprintf(rpath, PATH_MAX, "%s%s", base_path, dir); else {
dir = rpath; snprintf(rpath, PATH_MAX, "%s%s", base_path, dir);
dir = rpath;
}
} }


path = enter_repo(dir, strict_paths); path = enter_repo(dir, strict_paths);