When adding a new package release adds a new entry to the 'backup' list, no
hash exists for that file in the previously installed package version.
This patch fixes two places where that nonexistent hash may be dereferenced.

Signed-off-by: Will Miles <wmi...@sgl.com>
---
 lib/libalpm/add.c      | 2 +-
 lib/libalpm/be_local.c | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c
index f5c9a95..ff0b81d 100644
--- a/lib/libalpm/add.c
+++ b/lib/libalpm/add.c
@@ -341,7 +341,7 @@ static int extract_single_file(alpm_handle_t *handle, 
struct archive *archive,
                _alpm_log(handle, ALPM_LOG_DEBUG, "checking hashes for %s\n", 
origfile);
                _alpm_log(handle, ALPM_LOG_DEBUG, "current:  %s\n", hash_local);
                _alpm_log(handle, ALPM_LOG_DEBUG, "new:      %s\n", hash_pkg);
-               _alpm_log(handle, ALPM_LOG_DEBUG, "original: %s\n", hash_orig);
+               _alpm_log(handle, ALPM_LOG_DEBUG, "original: %s\n", (hash_orig 
? hash_orig : "NULL") );
 
                if(hash_local && hash_pkg && strcmp(hash_local, hash_pkg) == 0) 
{
                        /* local and new files are the same, updating anyway to 
get
diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c
index f817822..5e39199 100644
--- a/lib/libalpm/be_local.c
+++ b/lib/libalpm/be_local.c
@@ -1037,7 +1037,9 @@ int _alpm_local_db_write(alpm_db_t *db, alpm_pkg_t *info, 
alpm_dbinfrq_t inforeq
                        fputs("%BACKUP%\n", fp);
                        for(lp = info->backup; lp; lp = lp->next) {
                                const alpm_backup_t *backup = lp->data;
-                               fprintf(fp, "%s\t%s\n", backup->name, 
backup->hash);
+                               if (backup->hash) {
+                                       fprintf(fp, "%s\t%s\n", backup->name, 
backup->hash);
+                               }
                        }
                        fputc('\n', fp);
                }
-- 
2.6.3

Reply via email to