if (keyid > 0xFFFFFFFF) {
snprintf(statement, 1023,
- "SELECT keydata FROM onak_keys WHERE keyid = '%llX'",
+ "SELECT keydata FROM onak_keys WHERE keyid = '%"
+ PRIX64 "'",
keyid);
} else {
snprintf(statement, 1023,
"SELECT keydata FROM onak_keys WHERE keyid "
- "LIKE '%%%llX'",
+ "LIKE '%%%" PRIX64 "'",
keyid);
}
result = PQexec(dbconn, statement);
newsearch = malloc(strlen(search) * 2 + 1);
memset(newsearch, 0, strlen(search) * 2 + 1);
- PQescapeString(newsearch, search, strlen(search));
+ PQescapeStringConn(dbconn, newsearch, search, strlen(search), NULL);
snprintf(statement, 1023,
"SELECT DISTINCT onak_keys.keydata FROM onak_keys, "
"onak_uids WHERE onak_keys.keyid = onak_uids.keyid "
return (numkeys);
}
+/**
+ * delete_key - Given a keyid delete the key from storage.
+ * @keyid: The keyid to delete.
+ * @intrans: If we're already in a transaction.
+ *
+ * This function deletes a public key from whatever storage mechanism we
+ * are using. Returns 0 if the key existed.
+ */
+static int pg_delete_key(uint64_t keyid, bool intrans)
+{
+ PGresult *result = NULL;
+ char *oids = NULL;
+ char statement[1024];
+ int found = 1;
+ int i;
+ Oid key_oid;
+
+ if (!intrans) {
+ result = PQexec(dbconn, "BEGIN");
+ PQclear(result);
+ }
+
+ snprintf(statement, 1023,
+ "SELECT keydata FROM onak_keys WHERE keyid = '%"
+ PRIX64 "'",
+ keyid);
+ result = PQexec(dbconn, statement);
+
+ if (PQresultStatus(result) == PGRES_TUPLES_OK) {
+ found = 0;
+ i = PQntuples(result);
+ while (i > 0) {
+ oids = PQgetvalue(result, i-1, 0);
+ key_oid = (Oid) atoi(oids);
+ lo_unlink(dbconn, key_oid);
+ i--;
+ }
+ PQclear(result);
+
+ snprintf(statement, 1023,
+ "DELETE FROM onak_keys WHERE keyid = '%" PRIX64 "'",
+ keyid);
+ result = PQexec(dbconn, statement);
+ PQclear(result);
+
+ snprintf(statement, 1023,
+ "DELETE FROM onak_sigs WHERE signee = '%" PRIX64 "'",
+ keyid);
+ result = PQexec(dbconn, statement);
+ PQclear(result);
+
+ snprintf(statement, 1023,
+ "DELETE FROM onak_uids WHERE keyid = '%" PRIX64 "'",
+ keyid);
+ result = PQexec(dbconn, statement);
+ } else if (PQresultStatus(result) != PGRES_TUPLES_OK) {
+ logthing(LOGTHING_ERROR,
+ "Problem retrieving key (%" PRIX64
+ ") from DB.",
+ keyid);
+ }
+
+ PQclear(result);
+
+ if (!intrans) {
+ result = PQexec(dbconn, "COMMIT");
+ PQclear(result);
+ }
+ return (found);
+}
+
/**
* store_key - Takes a key and stores it.
* @publickey: A pointer to the public key to store.
snprintf(statement, 1023,
"INSERT INTO onak_keys (keyid, keydata) VALUES "
- "('%llX', '%d')",
+ "('%" PRIX64 "', '%d')",
get_keyid(publickey),
key_oid);
result = PQexec(dbconn, statement);
safeuid = malloc(strlen(uids[i]) * 2 + 1);
if (safeuid != NULL) {
memset(safeuid, 0, strlen(uids[i]) * 2 + 1);
- PQescapeString(safeuid, uids[i],
- strlen(uids[i]));
+ PQescapeStringConn(dbconn, safeuid, uids[i],
+ strlen(uids[i]), NULL);
snprintf(statement, 1023,
"INSERT INTO onak_uids "
"(keyid, uid, pri) "
- "VALUES ('%llX', '%s', '%c')",
+ "VALUES ('%" PRIX64 "', '%s', '%c')",
get_keyid(publickey),
safeuid,
(uids[i] == primary) ? 't' : 'f');
packets = packets->next) {
snprintf(statement, 1023,
"INSERT INTO onak_sigs (signer, signee) "
- "VALUES ('%llX', '%llX')",
+ "VALUES ('%" PRIX64 "', '%" PRIX64 "')",
sig_keyid(packets->packet),
get_keyid(publickey));
result = PQexec(dbconn, statement);
return 0;
}
-/**
- * delete_key - Given a keyid delete the key from storage.
- * @keyid: The keyid to delete.
- * @intrans: If we're already in a transaction.
- *
- * This function deletes a public key from whatever storage mechanism we
- * are using. Returns 0 if the key existed.
- */
-static int pg_delete_key(uint64_t keyid, bool intrans)
-{
- PGresult *result = NULL;
- char *oids = NULL;
- char statement[1024];
- int found = 1;
- int i;
- Oid key_oid;
-
- if (!intrans) {
- result = PQexec(dbconn, "BEGIN");
- PQclear(result);
- }
-
- snprintf(statement, 1023,
- "SELECT keydata FROM onak_keys WHERE keyid = '%llX'",
- keyid);
- result = PQexec(dbconn, statement);
-
- if (PQresultStatus(result) == PGRES_TUPLES_OK) {
- found = 0;
- i = PQntuples(result);
- while (i > 0) {
- oids = PQgetvalue(result, i-1, 0);
- key_oid = (Oid) atoi(oids);
- lo_unlink(dbconn, key_oid);
- i--;
- }
- PQclear(result);
-
- snprintf(statement, 1023,
- "DELETE FROM onak_keys WHERE keyid = '%llX'",
- keyid);
- result = PQexec(dbconn, statement);
- PQclear(result);
-
- snprintf(statement, 1023,
- "DELETE FROM onak_sigs WHERE signee = '%llX'",
- keyid);
- result = PQexec(dbconn, statement);
- PQclear(result);
-
- snprintf(statement, 1023,
- "DELETE FROM onak_uids WHERE keyid = '%llX'",
- keyid);
- result = PQexec(dbconn, statement);
- } else if (PQresultStatus(result) != PGRES_TUPLES_OK) {
- logthing(LOGTHING_ERROR,
- "Problem retrieving key (%llX) from DB.",
- keyid);
- }
-
- PQclear(result);
-
- if (!intrans) {
- result = PQexec(dbconn, "COMMIT");
- PQclear(result);
- }
- return (found);
-}
-
/**
* keyid2uid - Takes a keyid and returns the primary UID for it.
* @keyid: The keyid to lookup.
char *uid = NULL;
snprintf(statement, 1023,
- "SELECT uid FROM onak_uids WHERE keyid = '%llX' AND pri = 't'",
+ "SELECT uid FROM onak_uids WHERE keyid = '%" PRIX64
+ "' AND pri = 't'",
keyid);
result = PQexec(dbconn, statement);
uid = strdup(PQgetvalue(result, 0, 0));
} else if (PQresultStatus(result) != PGRES_TUPLES_OK) {
logthing(LOGTHING_ERROR,
- "Problem retrieving key (%llX) from DB.",
+ "Problem retrieving key (%" PRIX64
+ ") from DB.",
keyid);
}
}
snprintf(statement, 1023,
- "SELECT DISTINCT signer FROM onak_sigs WHERE signee = '%llX'",
+ "SELECT DISTINCT signer FROM onak_sigs WHERE signee = '%"
+ PRIX64 "'",
keyid);
result = PQexec(dbconn, statement);
struct openpgp_publickey *key = NULL;
PGresult *result = NULL;
char *oids = NULL;
- char statement[1024];
int fd = -1;
int i = 0;
int numkeys = 0;
} else {
read_openpgp_stream(keydb_fetchchar, &fd,
&packets, 0);
- parse_keys(packets, key);
+ parse_keys(packets, &key);
lo_close(dbconn, fd);
iterfunc(ctx, key);