Reject relative control socket paths and emit a warning.

Previously we would accept relative paths, but only if they contained a
slash somewhere (not at the end).

Otherwise we would silently not work.  Closes: #9258.  Bugfix on
0.2.3.16-alpha.
This commit is contained in:
Peter Palfrader 2013-07-15 10:46:22 +02:00 committed by Nick Mathewson
parent 5cc52b242e
commit 783c52b6df

View file

@ -877,8 +877,11 @@ check_location_for_unix_socket(const or_options_t *options, const char *path)
int r = -1;
char *p = tor_strdup(path);
cpd_check_t flags = CPD_CHECK_MODE_ONLY;
if (get_parent_directory(p)<0)
if (get_parent_directory(p)<0 || p[0] != '/') {
log_warn(LD_GENERAL, "Bad unix socket address '%s'. Tor does not support "
"relative patchs for unix sockets.", path);
goto done;
}
if (options->ControlSocketsGroupWritable)
flags |= CPD_GROUP_OK;