uint64_t keyid;
struct ll *wordlist = NULL, *wl = NULL;
struct skshash hash;
- uint64_t *subkeyids = NULL;
+ struct openpgp_fingerprint *subkeyids = NULL;
uint32_t hashid;
int i = 0;
subkeyids = keysubkeys(publickey);
i = 0;
- while (subkeyids != NULL && subkeyids[i] != 0) {
- prove_path_to(subkeyids[i], "subkeys");
+ while (subkeyids != NULL && subkeyids[i].length != 0) {
+ keyid = fingerprint2keyid(&subkeyids[i]);
- subkeydir(wbuffer, sizeof(wbuffer), subkeyids[i]);
+ prove_path_to(keyid, "subkeys");
+
+ subkeydir(wbuffer, sizeof(wbuffer), keyid);
mkdir(wbuffer, 0777);
- subkeypath(wbuffer, sizeof(wbuffer), subkeyids[i]);
+ subkeypath(wbuffer, sizeof(wbuffer), keyid);
link(buffer, wbuffer);
i++;
struct openpgp_publickey *pk = NULL;
struct skshash hash;
struct ll *wordlist = NULL, *wl = NULL;
- uint64_t *subkeyids = NULL;
+ struct openpgp_fingerprint *subkeyids = NULL;
+ uint64_t subkeyid;
int i = 0;
if ((keyid >> 32) == 0)
subkeyids = keysubkeys(pk);
i = 0;
- while (subkeyids != NULL && subkeyids[i] != 0) {
- prove_path_to(subkeyids[i], "subkeys");
+ while (subkeyids != NULL && subkeyids[i].length != 0) {
+ subkeyid = fingerprint2keyid(&subkeyids[i]);
+ prove_path_to(subkeyid, "subkeys");
- subkeypath(buffer, sizeof(buffer), subkeyids[i]);
+ subkeypath(buffer, sizeof(buffer), subkeyid);
unlink(buffer);
i++;
mkdir(config.db_dir, 0777);
privctx->lockfile_fd = open(buffer, O_RDWR | O_CREAT, 0600);
}
- chdir(config.db_dir);
+ if (chdir(config.db_dir) == -1) {
+ /* Shouldn't happen after the above */
+ logthing(LOGTHING_CRITICAL,
+ "Couldn't change to database directory: %s",
+ strerror(errno));
+ free(dbctx->priv);
+ free(dbctx);
+ return NULL;
+ }
privctx->lockfile_fd = open(buffer,
(privctx->lockfile_readonly) ?
O_RDONLY : O_RDWR);