On Fri, Aug 26, 2011 at 6:10 AM, Lukas Fleischer <archlinux@cryptocrack.de> wrote:
Jump to the cleanup label, free "pkgpath" and restore umask if a non-local database is passed.
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
This seemed like the better solution, but thanks for pointing out the problem: diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c index f53bd64..1a46dfd 100644 --- a/lib/libalpm/be_local.c +++ b/lib/libalpm/be_local.c @@ -750,7 +750,7 @@ int _alpm_local_db_write(alpm_db_t *db, alpm_pkg_t *info, alpm_dbinfrq_t inforeq int retval = 0; char *pkgpath = NULL; - if(db == NULL || info == NULL) { + if(db == NULL || info == NULL || !(db->status & DB_STATUS_LOCAL)) { return -1; } @@ -759,10 +759,6 @@ int _alpm_local_db_write(alpm_db_t *db, alpm_pkg_t *info, alpm_dbinfrq_t inforeq /* make sure we have a sane umask */ oldmask = umask(0022); - if(strcmp(db->treename, "local") != 0) { - return -1; - } - /* DESC */ if(inforeq & INFRQ_DESC) { _alpm_log(db->handle, ALPM_LOG_DEBUG, "writing %s-%s DESC information back to db\n",