Simplify maximum socket name length check

This commit is contained in:
Marc André Tanner 2015-02-17 22:46:44 +01:00
parent 98ac772a97
commit 64920e5977
1 changed files with 2 additions and 3 deletions

View File

@ -253,12 +253,11 @@ static int create_socket_dir(struct sockaddr_un *sockaddr) {
static bool set_socket_name(struct sockaddr_un *sockaddr, const char *name) {
size_t maxlen = sizeof(sockaddr->sun_path);
if (name[0] == '/') {
strncpy(sockaddr->sun_path, name, maxlen);
if (sockaddr->sun_path[maxlen-1]) {
sockaddr->sun_path[maxlen-1] = '\0';
if (strlen(name) >= maxlen) {
errno = ENAMETOOLONG;
return false;
}
strncpy(sockaddr->sun_path, name, maxlen);
} else if (name[0] == '.' && (name[1] == '.' || name[1] == '/')) {
char buf[maxlen], *cwd = getcwd(buf, sizeof buf);
if (!cwd)