]> the.earth.li Git - onak.git/blobdiff - keydb_db4.c
Cleanup postinst to avoid recursive chown of database
[onak.git] / keydb_db4.c
index d2db2c5a39923f6bd7a9c4fe32f415919beb7f02..1f306e267f60e9851c0dd65b0874517ba7afcb39 100644 (file)
@@ -72,10 +72,13 @@ DB *keydb_fp(struct onak_db4_dbctx *privctx, struct openpgp_fingerprint *fp)
 {
        uint64_t keytrun;
 
-       keytrun = (fp->fp[4] << 24) |
-                       (fp->fp[5] << 16) |
-                       (fp->fp[6] <<  8) |
-                       (fp->fp[7]);
+       keytrun = fp->fp[4];
+       keytrun <<= 8;
+       keytrun |= fp->fp[5];
+       keytrun <<= 8;
+       keytrun |= fp->fp[6];
+       keytrun <<= 8;
+       keytrun |= fp->fp[7];
 
        return(privctx->dbconns[keytrun % privctx->numdbs]);
 }
@@ -289,70 +292,6 @@ static int db4_upgradedb(struct onak_dbctx *dbctx)
        return ret;
 }
 
-/**
- *     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
- *     first full keyid that has this short keyid. If the key isn't found a
- *     keyid of 0 is returned.
- *
- *     FIXME: This should either return the fingerprint or ideally go away
- *     entirely.
- */
-static uint64_t db4_getfullkeyid(struct onak_dbctx *dbctx, uint64_t keyid)
-{
-       struct onak_db4_dbctx *privctx = (struct onak_db4_dbctx *) dbctx->priv;
-       DBT       key, data;
-       DBC      *cursor = NULL;
-       uint32_t  shortkeyid = 0;
-       int       ret = 0;
-       int       i;
-
-       if (keyid < 0x100000000LL) {
-               ret = privctx->id32db->cursor(privctx->id32db,
-                               privctx->txn,
-                               &cursor,
-                               0);   /* flags */
-
-               if (ret != 0) {
-                       return 0;
-               }
-
-               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 = 0;
-                       /* Only works for v4, not v3 or v5 */
-                       for (i = 12; i < 20; i++) {
-                               keyid <<= 8;
-                               keyid |= ((uint8_t *) data.data)[i];
-                       }
-
-                       if (data.data != NULL) {
-                               free(data.data);
-                               data.data = NULL;
-                       }
-               }
-
-               cursor->c_close(cursor);
-               cursor = NULL;
-       }
-
-       return keyid;
-}
-
 /**
  *     fetch_key_fp - Given a fingerprint fetch the key from storage.
  */
@@ -464,7 +403,6 @@ static int db4_fetch_key_id(struct onak_dbctx *dbctx, uint64_t keyid,
                bool intrans)
 {
        struct onak_db4_dbctx *privctx = (struct onak_db4_dbctx *) dbctx->priv;
-       struct openpgp_packet_list *packets = NULL;
        DBT key, data;
        DBC *cursor = NULL;
        int ret = 0;
@@ -536,12 +474,6 @@ static int db4_fetch_key_id(struct onak_dbctx *dbctx, uint64_t keyid,
        return (numkeys);
 }
 
-
-int worddb_cmp(const void *d1, const void *d2)
-{
-       return memcmp(d1, d2, 12);
-}
-
 /**
  *     fetch_key_text - Trys to find the keys that contain the supplied text.
  *     @search: The text to search for.
@@ -557,7 +489,6 @@ static int db4_fetch_key_text(struct onak_dbctx *dbctx, const char *search,
        DBC *cursor = NULL;
        DBT key, data;
        int ret;
-       uint64_t keyid;
        int i;
        int numkeys;
        char *searchtext = NULL;
@@ -662,7 +593,6 @@ static int db4_fetch_key_skshash(struct onak_dbctx *dbctx,
        struct onak_db4_dbctx *privctx = (struct onak_db4_dbctx *) dbctx->priv;
        DBT       key, data;
        DBC      *cursor = NULL;
-       uint64_t  keyid = 0;
        int       ret;
        int       count = 0;
        struct openpgp_fingerprint fingerprint;
@@ -725,7 +655,6 @@ static int db4_delete_key(struct onak_dbctx *dbctx,
        int i;
        char **uids = NULL;
        char *primary = NULL;
-       unsigned char worddb_data[12];
        struct ll *wordlist = NULL;
        struct ll *curword  = NULL;
        bool deadlock = false;
@@ -765,13 +694,6 @@ static int db4_delete_key(struct onak_dbctx *dbctx,
 
                for (curword = wordlist; curword != NULL && !deadlock;
                                curword = curword->next) {
-                       memset(&key, 0, sizeof(key));
-                       memset(&data, 0, sizeof(data));
-                       key.data = curword->object;
-                       key.size = strlen(key.data);
-                       data.data = worddb_data;
-                       data.size = sizeof(worddb_data);
-
                        /*
                         * New style uses the fingerprint as the data
                         * Old (unsupported) style was the 64 bit keyid
@@ -893,7 +815,7 @@ static int db4_delete_key(struct onak_dbctx *dbctx,
                        memset(&key, 0, sizeof(key));
                        key.data = subkeyids[i].fp;
                        key.size = subkeyids[i].length;
-                       privctx->subkeydb->del(privctx->subkeydb,
+                       ret = privctx->subkeydb->del(privctx->subkeydb,
                                        privctx->txn, &key, 0);
                        if (ret != 0 && ret != DB_NOTFOUND) {
                                logthing(LOGTHING_ERROR,
@@ -1832,7 +1754,6 @@ struct onak_dbctx *keydb_db4_init(struct onak_db_config *dbcfg, bool readonly)
        dbctx->getkeysigs               = generic_getkeysigs;
        dbctx->cached_getkeysigs        = generic_cached_getkeysigs;
        dbctx->keyid2uid                = generic_keyid2uid;
-       dbctx->getfullkeyid             = db4_getfullkeyid;
        dbctx->iterate_keys             = db4_iterate_keys;
 
        return dbctx;