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) {
|
||||
size_t maxlen = sizeof(sockaddr.sun_path);
|
||||
if (name[0] == '.' || name[0] == '/') {
|
||||
if (name[0] == '/') {
|
||||
strncpy(sockaddr.sun_path, name, maxlen);
|
||||
if (sockaddr.sun_path[maxlen-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 {
|
||||
int len = create_socket_dir(), rem = strlen(name);
|
||||
if (len == -1 || maxlen - len - rem <= 0)
|
||||
|
|
|
|||
Loading…
Reference in New Issue