diff options
Diffstat (limited to 'kbx')
-rw-r--r-- | kbx/keybox-search-desc.h | 3 | ||||
-rw-r--r-- | kbx/keybox-search.c | 6 |
2 files changed, 5 insertions, 4 deletions
diff --git a/kbx/keybox-search-desc.h b/kbx/keybox-search-desc.h index 1167b1a6d..9a0df2846 100644 --- a/kbx/keybox-search-desc.h +++ b/kbx/keybox-search-desc.h @@ -75,7 +75,7 @@ struct keydb_search_desc int (*skipfnc)(void *, u32 *, int); void *skipfncvalue; const unsigned char *sn; - int snlen; /* -1 := sn is a hex string */ + unsigned short snlen; union { const char *name; unsigned char fpr[32]; @@ -83,6 +83,7 @@ struct keydb_search_desc unsigned char grip[KEYGRIP_LEN]; unsigned char ubid[UBID_LEN]; } u; + byte snhex; /* SN above is a hexstring and not binary. */ byte fprlen; /* Only used with KEYDB_SEARCH_MODE_FPR. */ int exact; /* Use exactly this key ('!' suffix in gpg). */ }; diff --git a/kbx/keybox-search.c b/kbx/keybox-search.c index 67862a376..c07cd48c9 100644 --- a/kbx/keybox-search.c +++ b/kbx/keybox-search.c @@ -982,7 +982,7 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc, } if (desc[n].skipfnc) any_skip = 1; - if (desc[n].snlen == -1 && !sn_array) + if (desc[n].snhex && !sn_array) { sn_array = xtrycalloc (ndesc, sizeof *sn_array); if (!sn_array) @@ -1042,12 +1042,12 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc, { if (!desc[n].sn) ; - else if (desc[n].snlen == -1) + else if (desc[n].snhex) { unsigned char *sn; s = desc[n].sn; - for (i=0; *s && *s != '/'; s++, i++) + for (i=0; *s && *s != '/' && i < desc[n].snlen; s++, i++) ; odd = (i & 1); snlen = (i+1)/2; |