From 5acc1d5fc8fc68a01854fb8c4656f1702e1b9133 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 23 Aug 2022 10:01:19 +0000 Subject: [PATCH] database: Check if this version of libloc supports the database format Signed-off-by: Michael Tremer --- src/database.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/database.c b/src/database.c index afd64dc..ea058b6 100644 --- a/src/database.c +++ b/src/database.c @@ -166,6 +166,19 @@ static void* __loc_database_read_object(struct loc_database* db, void* buffer, return buffer; } +static int loc_database_version_supported(struct loc_database* db, uint8_t version) { + switch (version) { + // Supported versions + case LOC_DATABASE_VERSION_1: + return 1; + + default: + ERROR(db->ctx, "Database version %d is not supported\n", version); + errno = ENOTSUP; + return 0; + } +} + static int loc_database_check_magic(struct loc_database* db) { struct loc_database_magic magic; @@ -183,6 +196,10 @@ static int loc_database_check_magic(struct loc_database* db) { if (memcmp(magic.magic, LOC_DATABASE_MAGIC, sizeof(magic.magic)) == 0) { DEBUG(db->ctx, "Magic value matches\n"); + // Do we support this version? + if (!loc_database_version_supported(db, magic.version)) + return 1; + // Parse version db->version = magic.version; -- 2.39.5