Fix potential buffer overflow error CID: 40674 78/31778/4
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Thu, 28 Aug 2014 15:44:08 +0000 (17:44 +0200)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Fri, 14 Aug 2015 08:01:14 +0000 (01:01 -0700)
Change backported from security-server repository.

Change-Id: Ifcbd8ebe4ddfa4c04dd000639cab2c60648c3943
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
src/server/main/socket-manager.cpp

index 94c54c6..0366186 100644 (file)
@@ -484,6 +484,13 @@ int SocketManager::CreateDomainSocketHelp(
 {
     int sockfd;
 
+    if(desc.serviceHandlerPath.size() >= sizeof(static_cast<sockaddr_un*>(0)->sun_path) /
+                                         sizeof(decltype(desc.serviceHandlerPath)::value_type)) {
+        LogError("Service handler path too long: " << desc.serviceHandlerPath.size());
+        ThrowMsg(Exception::InitFailed,
+                 "Service handler path too long: " << desc.serviceHandlerPath.size());
+    }
+
     if (-1 == (sockfd = socket(AF_UNIX, SOCK_STREAM, 0))) {
         int err = errno;
         LogError("Error in socket: " << strerror(err));