From 214097e804c82833ccedee133a212662a14563dd Mon Sep 17 00:00:00 2001 From: Andreas Steffen Date: Thu, 19 Jul 2012 13:48:32 +0200 Subject: [PATCH] queries with relative filenames might return multiple results --- src/libpts/pts/pts_database.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/libpts/pts/pts_database.c b/src/libpts/pts/pts_database.c index 7d6e6abab..946f37e1e 100644 --- a/src/libpts/pts/pts_database.c +++ b/src/libpts/pts/pts_database.c @@ -127,7 +127,7 @@ METHOD(pts_database_t, check_file_measurement, status_t, { enumerator_t *e; chunk_t hash; - status_t status; + status_t status = NOT_FOUND; e = this->db->query(this->db, "SELECT fh.hash FROM file_hashes AS fh " @@ -139,15 +139,19 @@ METHOD(pts_database_t, check_file_measurement, status_t, { return FAILED; } - if (e->enumerate(e, &hash)) + while (e->enumerate(e, &hash)) { - status = chunk_equals(measurement, hash) ? - SUCCESS : VERIFY_ERROR; - } - else - { - status = NOT_FOUND; - } + /* with relative filenames there might be multiple entries */ + if (chunk_equals(measurement, hash)) + { + status = SUCCESS; + break; + } + else + { + status = VERIFY_ERROR; + } + } e->destroy(e); return status;