Use proper delete[] operator in security_manager_get_policy_internal 77/35077/4
authorRafal Krypa <r.krypa@samsung.com>
Fri, 6 Feb 2015 16:52:35 +0000 (17:52 +0100)
committerRafal Krypa <r.krypa@samsung.com>
Mon, 2 Mar 2015 15:19:54 +0000 (16:19 +0100)
Freeing of array, previously allocated with new[], was incorrectly done by
delete operator.

Change-Id: Iec17c68ad9e6e42f199c0a3b4cb9dc6b65a1a5a1
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
src/client/client-security-manager.cpp

index 8ca6f08..5b9323a 100644 (file)
@@ -716,13 +716,13 @@ static inline int security_manager_get_policy_internal(
         }
         //receive response from server
         Deserialization::Deserialize(recv, retval);
-        switch(retval) {
+        switch (retval) {
             case SECURITY_MANAGER_API_SUCCESS: {
                 //extract and allocate buffers for privs policy entries
                 int entriesCnt = 0;
                 policy_entry **entries = nullptr;
-                Deserialization::Deserialize(recv, entriesCnt);
                 try {
+                    Deserialization::Deserialize(recv, entriesCnt);
                     entries = new policy_entry*[entriesCnt]();
                     for (int i = 0; i < entriesCnt; ++i) {
                         entries[i] = new policy_entry;
@@ -732,7 +732,7 @@ static inline int security_manager_get_policy_internal(
                     LogError("Error while parsing server response");
                     for (int i = 0; i < entriesCnt; ++i)
                         delete(entries[i]);
-                    delete entries;
+                    delete[] entries;
                     return SECURITY_MANAGER_ERROR_UNKNOWN;
                 }
                 *p_size = entriesCnt;