399a2a8
From 04691e6f814b76ea497d8189b9b77d4c0feff794 Mon Sep 17 00:00:00 2001
399a2a8
From: Michal Schmidt <mschmidt@redhat.com>
399a2a8
Date: Fri, 20 Feb 2015 02:25:16 +0100
399a2a8
Subject: [PATCH] shared: handle unnamed sockets in socket_address_equal()
399a2a8
399a2a8
Make sure we don't inspect sun_path of unnamed sockets.
399a2a8
Since we cannot know if two unnamed sockets' adresses refer to the same
399a2a8
socket, just return false.
399a2a8
399a2a8
(cherry picked from commit 710708a54ccc48e168ad7d4cd401645ef9e2eb14)
399a2a8
---
399a2a8
 src/shared/socket-util.c | 4 ++++
399a2a8
 1 file changed, 4 insertions(+)
399a2a8
399a2a8
diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c
399a2a8
index deecce8a80..a4e26b1d8c 100644
399a2a8
--- a/src/shared/socket-util.c
399a2a8
+++ b/src/shared/socket-util.c
399a2a8
@@ -349,6 +349,10 @@ bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) {
399a2a8
                 break;
399a2a8
 
399a2a8
         case AF_UNIX:
399a2a8
+                if (a->size <= offsetof(struct sockaddr_un, sun_path) ||
399a2a8
+                    b->size <= offsetof(struct sockaddr_un, sun_path))
399a2a8
+                        return false;
399a2a8
+
399a2a8
                 if ((a->sockaddr.un.sun_path[0] == 0) != (b->sockaddr.un.sun_path[0] == 0))
399a2a8
                         return false;
399a2a8