diff options
author | Timo Teras <timo.teras@iki.fi> | 2009-08-04 11:08:19 +0300 |
---|---|---|
committer | Timo Teras <timo.teras@iki.fi> | 2009-08-04 11:08:19 +0300 |
commit | 8c19869c2910332913b5a4f341dbe612c691782e (patch) | |
tree | ae16c6a95b75ace756eaf4c38abc2fadb4aac3d1 /src/database.c | |
parent | 6f8526da3e7fb055dc3ee640b943906e517f63f1 (diff) | |
download | apk-tools-8c19869c2910332913b5a4f341dbe612c691782e.tar.gz apk-tools-8c19869c2910332913b5a4f341dbe612c691782e.tar.bz2 apk-tools-8c19869c2910332913b5a4f341dbe612c691782e.tar.xz apk-tools-8c19869c2910332913b5a4f341dbe612c691782e.zip |
db: return hard error if repository opening fails
otherwise we can accept unsigned repositories, and install bad
packages.
Diffstat (limited to 'src/database.c')
-rw-r--r-- | src/database.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/database.c b/src/database.c index 8676466..9a09ecd 100644 --- a/src/database.c +++ b/src/database.c @@ -883,7 +883,7 @@ int apk_db_open(struct apk_database *db, const char *root, unsigned int flags) struct apk_repository_url *repo = NULL; struct stat64 st; apk_blob_t blob; - int r; + int r, rr = 0; memset(db, 0, sizeof(*db)); apk_hash_init(&db->available.names, &pkg_name_hash_ops, 1000); @@ -978,22 +978,26 @@ int apk_db_open(struct apk_database *db, const char *root, unsigned int flags) apk_repos = "etc/apk/repositories"; blob = apk_blob_from_file(db->root_fd, apk_repos); if (!APK_BLOB_IS_NULL(blob)) { - apk_blob_for_each_segment(blob, "\n", - apk_db_add_repository, db); + r = apk_blob_for_each_segment( + blob, "\n", + apk_db_add_repository, db); + rr = r ?: rr; free(blob.ptr); } } } if (!(flags & APK_OPENF_NO_REPOS)) { - list_for_each_entry(repo, &apk_repository_list.list, list) - apk_db_add_repository(db, APK_BLOB_STR(repo->url)); + list_for_each_entry(repo, &apk_repository_list.list, list) { + r = apk_db_add_repository(db, APK_BLOB_STR(repo->url)); + rr = r ?: rr; + } if (apk_flags & APK_UPDATE_CACHE) apk_db_index_write_nr_cache(db); } - return 0; + return rr; ret_errno: r = -errno; |