From ac6e13d65ff21e50b6aa69cdeb59403951172f7d Mon Sep 17 00:00:00 2001
From: Jonathan McDowell <noodles@pot>
Date: Wed, 16 Jan 2008 22:13:04 +0000
Subject: [PATCH] Fix getfullkeyid in db4 backend.

---
 keydb_db4.c | 100 ++++++++++++++++++++++++++--------------------------
 1 file changed, 50 insertions(+), 50 deletions(-)

diff --git a/keydb_db4.c b/keydb_db4.c
index b443942..7f6404c 100644
--- a/keydb_db4.c
+++ b/keydb_db4.c
@@ -332,6 +332,55 @@ static void db4_initdb(bool readonly)
 	return;
 }
 
+/**
+ *	getfullkeyid - Maps a 32bit key id to a 64bit one.
+ *	@keyid: The 32bit keyid.
+ *
+ *	This function maps a 32bit key id to the full 64bit one. It returns the
+ *	full keyid. If the key isn't found a keyid of 0 is returned.
+ */
+static uint64_t db4_getfullkeyid(uint64_t keyid)
+{
+	DBT       key, data;
+	DBC      *cursor = NULL;
+	uint32_t  shortkeyid = 0;
+	int       ret = 0;
+
+	if (keyid < 0x100000000LL) {
+		ret = id32db->cursor(id32db,
+				txn,
+				&cursor,
+				0);   /* flags */
+
+		shortkeyid = keyid & 0xFFFFFFFF;
+
+		memset(&key, 0, sizeof(key));
+		memset(&data, 0, sizeof(data));
+		key.data = &shortkeyid;
+		key.size = sizeof(shortkeyid);
+		data.flags = DB_DBT_MALLOC;
+
+		ret = cursor->c_get(cursor,
+			&key,
+			&data,
+			DB_SET);
+
+		if (ret == 0) {
+			keyid = *(uint64_t *) data.data;
+
+			if (data.data != NULL) {
+				free(data.data);
+				data.data = NULL;
+			}
+		}
+
+		ret = cursor->c_close(cursor);
+		cursor = NULL;
+	}
+	
+	return keyid;
+}
+
 /**
  *	fetch_key - Given a keyid fetch the key from storage.
  *	@keyid: The keyid to fetch.
@@ -354,7 +403,7 @@ static int db4_fetch_key(uint64_t keyid, struct openpgp_publickey **publickey,
 	struct buffer_ctx fetchbuf;
 
 	if (keyid < 0x100000000LL) {
-		keyid = getfullkeyid(keyid);
+		keyid = db4_getfullkeyid(keyid);
 	}
 
 	memset(&key, 0, sizeof(key));
@@ -1011,55 +1060,6 @@ static int db4_iterate_keys(void (*iterfunc)(void *ctx,
 	return numkeys;
 }
 
-/**
- *	getfullkeyid - Maps a 32bit key id to a 64bit one.
- *	@keyid: The 32bit keyid.
- *
- *	This function maps a 32bit key id to the full 64bit one. It returns the
- *	full keyid. If the key isn't found a keyid of 0 is returned.
- */
-static uint64_t db4_getfullkeyid(uint64_t keyid)
-{
-	DBT       key, data;
-	DBC      *cursor = NULL;
-	uint32_t  shortkeyid = 0;
-	int       ret = 0;
-
-	if (keyid < 0x100000000LL) {
-		ret = id32db->cursor(id32db,
-				txn,
-				&cursor,
-				0);   /* flags */
-
-		shortkeyid = keyid & 0xFFFFFFFF;
-
-		memset(&key, 0, sizeof(key));
-		memset(&data, 0, sizeof(data));
-		key.data = &shortkeyid;
-		key.size = sizeof(shortkeyid);
-		data.flags = DB_DBT_MALLOC;
-
-		ret = cursor->c_get(cursor,
-			&key,
-			&data,
-			DB_SET);
-
-		if (ret == 0) {
-			keyid = *(uint64_t *) data.data;
-
-			if (data.data != NULL) {
-				free(data.data);
-				data.data = NULL;
-			}
-		}
-
-		ret = cursor->c_close(cursor);
-		cursor = NULL;
-	}
-	
-	return keyid;
-}
-
 /*
  * Include the basic keydb routines.
  */
-- 
2.39.5