From 4bfa9feca4ad235dad4bd327dbe59617f60a231b Mon Sep 17 00:00:00 2001
From: "Dmitry E. Oboukhov" <unera@debian.org>
Date: Mon, 18 Aug 2014 18:19:30 +0400
Subject: [PATCH] Fix trash in socket:peername/name if it is UNIX-socket.

---
 src/lua/bsdsocket.cc | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/lua/bsdsocket.cc b/src/lua/bsdsocket.cc
index 67ac0d9764..35d47bf1f8 100644
--- a/src/lua/bsdsocket.cc
+++ b/src/lua/bsdsocket.cc
@@ -629,10 +629,16 @@ lbox_bsdsocket_push_addr(struct lua_State *L,
 		lua_pushliteral(L, "unix/");
 		lua_rawset(L, -3);
 
-		lua_pushliteral(L, "port");
-		lua_pushstring(L,
-			       ((struct sockaddr_un *)addr)->sun_path);
-		lua_rawset(L, -3);
+		if (alen > sizeof(addr->sa_family)) {
+			lua_pushliteral(L, "port");
+			lua_pushstring(L,
+				       ((struct sockaddr_un *)addr)->sun_path);
+			lua_rawset(L, -3);
+		} else {
+			lua_pushliteral(L, "port");
+			lua_pushliteral(L, "");
+			lua_rawset(L, -3);
+		}
 		break;
 
 	default:	/* unknown family */
-- 
GitLab