forked from github/abduco
Fix support for relative socket paths
The server is invoking chdir("/") thus the relative paths became
meaningless.
Maybe realpath(3) with NULL as second argument should be used instead.
This commit is contained in:
parent
3a14718bb7
commit
6a99af6d1e
9
abduco.c
9
abduco.c
|
|
@ -198,10 +198,17 @@ static int create_socket_dir() {
|
||||||
|
|
||||||
static int create_socket(const char *name) {
|
static int create_socket(const char *name) {
|
||||||
size_t maxlen = sizeof(sockaddr.sun_path);
|
size_t maxlen = sizeof(sockaddr.sun_path);
|
||||||
if (name[0] == '.' || name[0] == '/') {
|
if (name[0] == '/') {
|
||||||
strncpy(sockaddr.sun_path, name, maxlen);
|
strncpy(sockaddr.sun_path, name, maxlen);
|
||||||
if (sockaddr.sun_path[maxlen-1])
|
if (sockaddr.sun_path[maxlen-1])
|
||||||
return -1;
|
return -1;
|
||||||
|
} else if (name[0] == '.') {
|
||||||
|
char buf[maxlen], *cwd = getcwd(buf, sizeof buf);
|
||||||
|
if (!cwd)
|
||||||
|
return -1;
|
||||||
|
int len = snprintf(sockaddr.sun_path, maxlen, "%s/%s", cwd, name);
|
||||||
|
if (len < 0 || (size_t)len >= maxlen)
|
||||||
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
int len = create_socket_dir(), rem = strlen(name);
|
int len = create_socket_dir(), rem = strlen(name);
|
||||||
if (len == -1 || maxlen - len - rem <= 0)
|
if (len == -1 || maxlen - len - rem <= 0)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue