[pacman-dev] [PATCH 4/5] Check the version of the local database during validation

Allan McRae allan at archlinux.org
Tue Jul 16 08:22:43 EDT 2013


Signed-off-by: Allan McRae <allan at archlinux.org>
---
 lib/libalpm/be_local.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c
index fe9e05a..3d6b8d6 100644
--- a/lib/libalpm/be_local.c
+++ b/lib/libalpm/be_local.c
@@ -398,9 +398,11 @@ static int local_db_validate(alpm_db_t *db)
 {
 	struct dirent *ent = NULL;
 	const char *dbpath;
+	DIR *dbdir;
 	char dbverpath[PATH_MAX];
 	FILE *dbverfile;
-	DIR *dbdir;
+	int t;
+	size_t version;
 
 	if(db->status & DB_STATUS_VALID) {
 		return 0;
@@ -456,6 +458,15 @@ static int local_db_validate(alpm_db_t *db)
 		goto version_latest;
 	}
 
+	t = fscanf(dbverfile, "%zu", &version);
+	(void)t;
+
+	fclose(dbverfile);
+
+	if(version != ALPM_LOCAL_DB_VERSION) {
+		goto version_error;
+	}
+
 version_latest:
 	db->status |= DB_STATUS_VALID;
 	db->status &= ~DB_STATUS_INVALID;
-- 
1.8.3.3



More information about the pacman-dev mailing list