[FIX] prevent issues 40/47040/2
authorAnatolii Nikulin <nikulin.a@samsung.com>
Fri, 28 Aug 2015 10:18:06 +0000 (13:18 +0300)
committerAnatolii Nikulin <nikulin.a@samsung.com>
Fri, 28 Aug 2015 10:27:00 +0000 (13:27 +0300)
Change-Id: If321129c9178fc616535e2ad2e1822dbd6870f3d
Signed-off-by: Anatolii Nikulin <nikulin.a@samsung.com>
daemon/cpp/elf/FileElf.cpp
daemon/cpp/features/feature_nsp.cpp
daemon/cpp/features/feature_wsp.cpp

index ce315cf..bee6efa 100644 (file)
@@ -330,14 +330,22 @@ int FileElf::doGetAddrPltARM(const char *names[], uint32_t addrs[], size_t cnt)
 
 int FileElf::doGetAddrPlt386(const char *names[], uint32_t addrs[], size_t cnt)
 {
-    const char *filename = this->path().c_str();
+    Elf_Addr *elf_addrs = NULL;
+    std::string filename(path());
     int ret;
+    size_t i;
 
-    ret = get_plt_addrs(filename, names, cnt, &addrs);
+    ret = get_plt_addrs(filename.c_str(), names, cnt, &elf_addrs);
     if (ret != 0) {
         LOGE("Error getting .plt: %s\n", get_str_error(ret));
         return -EINVAL;
     }
+    if (elf_addrs != NULL) {
+        for (i = 0; i < cnt; i++) {
+            addrs[i] = (uint32_t)elf_addrs[i];
+        }
+        free(elf_addrs);
+    }
 
     return 0;
 }
index cf7f3e8..43c846a 100644 (file)
@@ -117,7 +117,7 @@ static uint32_t getAddrPlt(const char *path, const char *name)
         return 0;
     }
 
-    uint32_t addr;
+    uint32_t addr = 0;
     int ret = elf.getAddrPlt(&name, &addr, 1);
     elf.close();
 
index 9c89248..d06f9a7 100644 (file)
@@ -74,7 +74,7 @@ class FeatureWSP : public Feature
 
                 std::string str = rmPlt(name);
                 const char *s = str.c_str();
-                uint32_t a;
+                uint32_t a = 0;
 
                 ret = elf.getAddrPlt(&s, &a, 1);
                 elf.close();