|
Lines 821-827
send:
Link Here
|
| 821 |
static void |
821 |
static void |
| 822 |
process_remove_smartcard_key(SocketEntry *e) |
822 |
process_remove_smartcard_key(SocketEntry *e) |
| 823 |
{ |
823 |
{ |
| 824 |
char *provider = NULL, *pin = NULL; |
824 |
char *provider = NULL, *pin = NULL, canonical_provider[PATH_MAX]; |
| 825 |
int r, version, success = 0; |
825 |
int r, version, success = 0; |
| 826 |
Identity *id, *nxt; |
826 |
Identity *id, *nxt; |
| 827 |
Idtab *tab; |
827 |
Idtab *tab; |
|
Lines 831-836
process_remove_smartcard_key(SocketEntry *e)
Link Here
|
| 831 |
fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
831 |
fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
| 832 |
free(pin); |
832 |
free(pin); |
| 833 |
|
833 |
|
|
|
834 |
if (realpath(provider, canonical_provider) == NULL) { |
| 835 |
verbose("failed PKCS#11 add of \"%.100s\": realpath: %s", |
| 836 |
provider, strerror(errno)); |
| 837 |
goto send; |
| 838 |
} |
| 839 |
|
| 840 |
debug("%s: remove %.100s", __func__, canonical_provider); |
| 834 |
for (version = 1; version < 3; version++) { |
841 |
for (version = 1; version < 3; version++) { |
| 835 |
tab = idtab_lookup(version); |
842 |
tab = idtab_lookup(version); |
| 836 |
for (id = TAILQ_FIRST(&tab->idlist); id; id = nxt) { |
843 |
for (id = TAILQ_FIRST(&tab->idlist); id; id = nxt) { |
|
Lines 838-851
process_remove_smartcard_key(SocketEntry *e)
Link Here
|
| 838 |
/* Skip file--based keys */ |
845 |
/* Skip file--based keys */ |
| 839 |
if (id->provider == NULL) |
846 |
if (id->provider == NULL) |
| 840 |
continue; |
847 |
continue; |
| 841 |
if (!strcmp(provider, id->provider)) { |
848 |
if (!strcmp(canonical_provider, id->provider)) { |
| 842 |
TAILQ_REMOVE(&tab->idlist, id, next); |
849 |
TAILQ_REMOVE(&tab->idlist, id, next); |
| 843 |
free_identity(id); |
850 |
free_identity(id); |
| 844 |
tab->nentries--; |
851 |
tab->nentries--; |
| 845 |
} |
852 |
} |
| 846 |
} |
853 |
} |
| 847 |
} |
854 |
} |
| 848 |
if (pkcs11_del_provider(provider) == 0) |
855 |
if (pkcs11_del_provider(canonical_provider) == 0) |
| 849 |
success = 1; |
856 |
success = 1; |
| 850 |
else |
857 |
else |
| 851 |
error("process_remove_smartcard_key:" |
858 |
error("process_remove_smartcard_key:" |