]> pd.if.org Git - zpackage/blobdiff - lib/zpm.c
fix pointer related bugs
[zpackage] / lib / zpm.c
index b8b77b0861b2e3f9a28d16b71fbe56f54ab0425a..e775b1209809f36c22ba7584d1036168a442432d 100644 (file)
--- a/lib/zpm.c
+++ b/lib/zpm.c
@@ -328,6 +328,10 @@ int zpm_init(struct zpm *pkg, char *path) {
        sqlite3 *db = 0;
        int appid;
 
+       if (!pkg) {
+               return 0;
+       }
+
        zpm_clearmem(pkg);
 
        rc = sqlite3_open_v2(path, &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
@@ -576,7 +580,7 @@ static int set_elf_info(sqlite3 *db, char *hash, char *content, size_t length) {
 
                /* if exe, set neededs */
                if (libelf_type(content) == ET_EXEC) {
-                       Elf64_Shdr *dsect;
+                       Elf64_Shdr *dsect = 0;
                        char *elf;
 
                        elf = (char *)content;
@@ -587,10 +591,17 @@ static int set_elf_info(sqlite3 *db, char *hash, char *content, size_t length) {
                                        dsect = (Elf64_Shdr *)(elf + phdr->p_offset);
                                }
                        }
+                       if (!dsect) {
+                               /* no dynamic section found */
+                               return 1;
+                       }
+
+#if 0
                        dyn = (Elf64_Dyn *)(elf + dsect->sh_offset);
                        if (!dyn) {
                                exit(9);
                        }
+#endif
                        dyn = (Elf64_Dyn *)dsect;
 
                        dsect = libelf_section(elf, SHT_DYNAMIC);