aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2017-03-27 04:56:02 +0000
committerNIIBE Yutaka <[email protected]>2017-03-27 04:56:02 +0000
commitd58275703f035e8cfd58cd1c2d0d5ac7dc59e110 (patch)
treec24185f91fe5b460d5ee6d385be17ce40cda85fa
parentscd: Fix timeout handling for key generation. (diff)
downloadgnupg-d58275703f035e8cfd58cd1c2d0d5ac7dc59e110.tar.gz
gnupg-d58275703f035e8cfd58cd1c2d0d5ac7dc59e110.zip
scd: Change the order of applications when accessed.
* scd/app.c (select_application): Move the app to top. Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r--scd/app.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/scd/app.c b/scd/app.c
index 472adc70f..044bb1db1 100644
--- a/scd/app.c
+++ b/scd/app.c
@@ -316,7 +316,7 @@ select_application (ctrl_t ctrl, const char *name, app_t *r_app,
size_t serialno_bin_len)
{
gpg_error_t err = 0;
- app_t a;
+ app_t a, a_prev = NULL;
*r_app = NULL;
@@ -375,6 +375,7 @@ select_application (ctrl_t ctrl, const char *name, app_t *r_app,
&& !memcmp (a->serialno, serialno_bin, a->serialnolen))
break;
unlock_app (a);
+ a_prev = a;
}
if (a)
@@ -384,7 +385,13 @@ select_application (ctrl_t ctrl, const char *name, app_t *r_app,
{
a->ref_count++;
*r_app = a;
- }
+ if (a_prev)
+ {
+ a_prev->next = a->next;
+ a->next = app_top;
+ app_top = a;
+ }
+ }
unlock_app (a);
}
else