bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux (#1370)

* bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux

* Add NEWS entry
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 6d5c256..456c664 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -1211,9 +1211,9 @@
     {
         struct sockaddr_un *a = (struct sockaddr_un *) addr;
 #ifdef __linux__
-        if (a->sun_path[0] == 0) {  /* Linux abstract namespace */
-            addrlen -= offsetof(struct sockaddr_un, sun_path);
-            return PyBytes_FromStringAndSize(a->sun_path, addrlen);
+        size_t linuxaddrlen = addrlen - offsetof(struct sockaddr_un, sun_path);
+        if (linuxaddrlen > 0 && a->sun_path[0] == 0) {  /* Linux abstract namespace */
+            return PyBytes_FromStringAndSize(a->sun_path, linuxaddrlen);
         }
         else
 #endif /* linux */