]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: prevent invalid socket symlink target dereference (#4895)
authorStefan Hajnoczi <stefanha@gmail.com>
Fri, 16 Dec 2016 10:20:27 +0000 (10:20 +0000)
committerLennart Poettering <lennart@poettering.net>
Fri, 16 Dec 2016 10:20:27 +0000 (11:20 +0100)
socket_find_symlink_target() returns a pointer to
p->address.sockaddr.un.sun_path when the first byte is non-zero without
checking that this is AF_UNIX socket.  Since sockaddr is a union this
byte could be non-zero for AF_INET sockets.

Existing callers happen to be safe but is an accident waiting to happen.
Use socket_address_get_path() since it checks for AF_UNIX.

src/core/socket.c

index fee9b702e656e954f8cf269563872c44368416e7..0960a300393fc86159022217a73eb82e1c95bb87 100644 (file)
@@ -423,8 +423,7 @@ static const char *socket_find_symlink_target(Socket *s) {
                         break;
 
                 case SOCKET_SOCKET:
-                        if (p->address.sockaddr.un.sun_path[0] != 0)
-                                f = p->address.sockaddr.un.sun_path;
+                        f = socket_address_get_path(&p->address);
                         break;
 
                 default: