Commit 5a7b90b5 authored by Andrei Vagin's avatar Andrei Vagin

zdtm/unix: add zero characters into a socket address

An abstract name can contain zero characters.
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
parent 8abb4a7f
...@@ -12,7 +12,7 @@ const char *test_author = "Vagin Andrew <avagin@parallels.com>"; ...@@ -12,7 +12,7 @@ const char *test_author = "Vagin Andrew <avagin@parallels.com>";
int main(int argc, char ** argv) int main(int argc, char ** argv)
{ {
int sk, skc; int sk, skc;
int ret; int ret, len;
char path[PATH_MAX]; char path[PATH_MAX];
struct sockaddr_un addr; struct sockaddr_un addr;
socklen_t addrlen; socklen_t addrlen;
...@@ -31,12 +31,13 @@ int main(int argc, char ** argv) ...@@ -31,12 +31,13 @@ int main(int argc, char ** argv)
return 1; return 1;
} }
snprintf(path, sizeof(path), "X/zdtm-%s-%d", argv[0], getpid()); len = snprintf(path, sizeof(path), "X/zdtm-%s-%d/X", argv[0], getpid());
addr.sun_family = AF_UNIX; addr.sun_family = AF_UNIX;
strncpy(addr.sun_path, path, sizeof(addr.sun_path)); strncpy(addr.sun_path, path, sizeof(addr.sun_path));
addrlen = sizeof(addr.sun_family) + strlen(path); addrlen = sizeof(addr.sun_family) + len;
addr.sun_path[0] = 0; addr.sun_path[0] = 0;
addr.sun_path[len - 1] = 0;
ret = bind(sk, (struct sockaddr *) &addr, addrlen); ret = bind(sk, (struct sockaddr *) &addr, addrlen);
if (ret) { if (ret) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment