Fix potential buffer overflow error CID: 40674 14/26814/2
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Thu, 28 Aug 2014 15:44:08 +0000 (17:44 +0200)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Fri, 29 Aug 2014 09:00:49 +0000 (11:00 +0200)
Change-Id: Ib534fbd6c753624526afb904ca7595f50a288b28

src/server/main/socket-manager.cpp

index 7a94561..69b278e 100644 (file)
@@ -485,6 +485,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));