Fixing prevent defects in security-server
authorMarcin Niesluchowski <m.niesluchow@samsung.com>
Fri, 5 Jul 2013 11:27:22 +0000 (13:27 +0200)
committerMarcin Niesluchowski <m.niesluchow@samsung.com>
Tue, 9 Jul 2013 12:54:11 +0000 (14:54 +0200)
* 63411; Critical; Resource leak; In function
  SecurityServer::BinaryQueue::AppendUnmanaged(
      void const*,
      unsigned int,
      void (*)(void const*, unsigned int, void *),
      void *)
  in src/server2/dpl/core/src/binary_queue.cpp
* 63374; Critical; Explicit null dereferenced; In function
  SecurityServer::SharedMemoryService::readOne(SecurityServer::ConnectionID const&,
                                               SecurityServer::SocketBuffer &)
  in src/server2/service/data-share.cpp

[Issue#]        SSDWSSP-356
[Bug/Feature]   Prevent bugs need to be fixed.
[Cause]         N/A
[Solution]      N/A
[Verification]  Running security-server tests.

Change-Id: I816e8b50ff94470256604d37a88a400dbeac59b5

src/server2/dpl/core/src/binary_queue.cpp
src/server2/service/data-share.cpp

index 5b99c11..be0c65d 100644 (file)
@@ -137,7 +137,13 @@ void BinaryQueue::AppendUnmanaged(const void* buffer,
     }
 
     // Just add new bucket with selected deleter
-    m_buckets.push_back(new Bucket(buffer, bufferSize, deleter, userParam));
+    Bucket *bucket = new Bucket(buffer, bufferSize, deleter, userParam);
+    try {
+        m_buckets.push_back(bucket);
+    } catch (const std::bad_alloc &) {
+        delete bucket;
+        throw;
+    }
 
     // Increase total queue size
     m_size += bufferSize;
index 21be1d9..3c51112 100644 (file)
@@ -158,8 +158,8 @@ bool SharedMemoryService::readOne(const ConnectionID &conn, SocketBuffer &buffer
             retCode = SECURITY_SERVER_API_ERROR_ACCESS_DENIED;
             goto end;
         }
+        LogDebug("Access granted. Subject: " << clientLabel << " Provider: " << providerLabel);
     }
-    LogDebug("Access granted. Subject: " << clientLabel << " Provider: " << providerLabel);
     retCode = SECURITY_SERVER_API_SUCCESS;
 end:
     free(providerLabel);