diff options
author | ubq323 <ubq323@ubq323.website> | 2022-10-29 04:00:50 +0100 |
---|---|---|
committer | ubq323 <ubq323@ubq323.website> | 2022-10-29 04:00:50 +0100 |
commit | cb2327d8e42c8d52d3e5dc8dd8132cb2c0933c70 (patch) | |
tree | d65675f27df7879d2635492872ade96c0a8324d0 | |
parent | 86dac1e342e0b5b52dbd68152cdc8d5a60128ce8 (diff) |
use chmod and friends instead of fchmod and friends
that way it actually works to set the permissions on the actual file. i don't know why it wasn't working. apparently fchmod etc on a socket is unspecified under posix as well
-rw-r--r-- | unix.c | 18 |
1 files changed, 9 insertions, 9 deletions
@@ -3,7 +3,7 @@ #include "conf.h" static int -sock_perms(int fd) +sock_perms(char fname[]) { // first get group by name struct group *group; @@ -12,18 +12,18 @@ sock_perms(int fd) return -1; } // set group on socket - if (fchown(fd, -1, group->gr_gid) == -1) { + if (chown(fname, -1, group->gr_gid) == -1) { perror("chown"); return -1; } // get current permissions, so we can modify them. struct stat sb; - if (fstat(fd, &sb) == -1) { + if (stat(fname, &sb) == -1) { perror("stat"); return -1; } - if (fchmod(fd, sb.st_mode|S_IWGRP) == -1) { + if (chmod(fname, sb.st_mode|S_IWGRP) == -1) { perror("chmod"); return -1; } @@ -34,9 +34,9 @@ sock_perms(int fd) // takes filename, returns socket fd // or -1 or whatever int -unix_setup(char sockname[]) +unix_setup(char filename[]) { - unlink(sockname); + unlink(filename); int sock = socket(AF_UNIX, SOCK_DGRAM, 0); if (sock == -1) { @@ -47,14 +47,14 @@ unix_setup(char sockname[]) struct sockaddr_un name; memset(&name, 0, sizeof name); name.sun_family = AF_UNIX; - strncpy(name.sun_path, sockname, (sizeof name.sun_path)-1); + strncpy(name.sun_path, filename, (sizeof name.sun_path)-1); if (bind(sock, (struct sockaddr *)&name, sizeof name) == -1) { perror("(unix) bind"); return -1; } - if (sock_perms(sock) == -1) { - fprintf(stderr,"warning: couldn't correctly set up permissions on %s\n",sockname); + if (sock_perms(filename) == -1) { + fprintf(stderr,"warning: couldn't correctly set up permissions on %s\n",filename); } return sock; |