Fix potential buffer overflow error CID: 40674 97/42897/6
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Fri, 3 Jul 2015 14:51:22 +0000 (16:51 +0200)
committerBartlomiej Grzelewski <b.grzelewski@samsung.com>
Thu, 13 Aug 2015 17:41:16 +0000 (10:41 -0700)
Change backported from security-server repository.

Change-Id: I7613de85e79bc5627336c70842c64bd35eb36468

src/manager/main/socket-manager.cpp

index 44a7d3c..c0bc93f 100644 (file)
@@ -488,6 +488,14 @@ int SocketManager::CreateDomainSocketHelp(
 {
     int sockfd;
 
+    if(desc.serviceHandlerPath.size()*sizeof(decltype(desc.serviceHandlerPath)::value_type) >=
+         sizeof(static_cast<sockaddr_un*>(0)->sun_path))
+    {
+        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: " << GetErrnoString(err));