summaryrefslogtreecommitdiff
path: root/ssh-agent.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2008-06-30 00:05:21 +1000
committerDamien Miller <djm@mindrot.org>2008-06-30 00:05:21 +1000
commit1cfadabc0e84551a3caa87c24cba6a0f2db43945 (patch)
tree4d26277802c3a6c242c303ccdec53ecf4b3733ee /ssh-agent.c
parentbd45afb5ad470ad78b462e3a34faa56b68c98abf (diff)
- djm@cvs.openbsd.org 2008/06/28 13:58:23
[ssh-agent.c] refuse to add a key that has unknown constraints specified; ok markus
Diffstat (limited to 'ssh-agent.c')
-rw-r--r--ssh-agent.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/ssh-agent.c b/ssh-agent.c
index 6f8727b33..8f9e2e8ce 100644
--- a/ssh-agent.c
+++ b/ssh-agent.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-agent.c,v 1.157 2007/09/25 23:48:57 canacar Exp $ */ 1/* $OpenBSD: ssh-agent.c,v 1.158 2008/06/28 13:58:23 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -526,9 +526,8 @@ process_add_identity(SocketEntry *e, int version)
526 xfree(comment); 526 xfree(comment);
527 goto send; 527 goto send;
528 } 528 }
529 success = 1;
530 while (buffer_len(&e->request)) { 529 while (buffer_len(&e->request)) {
531 switch (buffer_get_char(&e->request)) { 530 switch ((type = buffer_get_char(&e->request))) {
532 case SSH_AGENT_CONSTRAIN_LIFETIME: 531 case SSH_AGENT_CONSTRAIN_LIFETIME:
533 death = time(NULL) + buffer_get_int(&e->request); 532 death = time(NULL) + buffer_get_int(&e->request);
534 break; 533 break;
@@ -536,9 +535,14 @@ process_add_identity(SocketEntry *e, int version)
536 confirm = 1; 535 confirm = 1;
537 break; 536 break;
538 default: 537 default:
539 break; 538 error("process_add_identity: "
539 "Unknown constraint type %d", type);
540 xfree(comment);
541 key_free(k);
542 goto send;
540 } 543 }
541 } 544 }
545 success = 1;
542 if (lifetime && !death) 546 if (lifetime && !death)
543 death = time(NULL) + lifetime; 547 death = time(NULL) + lifetime;
544 if ((id = lookup_identity(k, version)) == NULL) { 548 if ((id = lookup_identity(k, version)) == NULL) {
@@ -604,10 +608,10 @@ no_identities(SocketEntry *e, u_int type)
604 608
605#ifdef SMARTCARD 609#ifdef SMARTCARD
606static void 610static void
607process_add_smartcard_key (SocketEntry *e) 611process_add_smartcard_key(SocketEntry *e)
608{ 612{
609 char *sc_reader_id = NULL, *pin; 613 char *sc_reader_id = NULL, *pin;
610 int i, version, success = 0, death = 0, confirm = 0; 614 int i, type, version, success = 0, death = 0, confirm = 0;
611 Key **keys, *k; 615 Key **keys, *k;
612 Identity *id; 616 Identity *id;
613 Idtab *tab; 617 Idtab *tab;
@@ -616,7 +620,7 @@ process_add_smartcard_key (SocketEntry *e)
616 pin = buffer_get_string(&e->request, NULL); 620 pin = buffer_get_string(&e->request, NULL);
617 621
618 while (buffer_len(&e->request)) { 622 while (buffer_len(&e->request)) {
619 switch (buffer_get_char(&e->request)) { 623 switch ((type = buffer_get_char(&e->request))) {
620 case SSH_AGENT_CONSTRAIN_LIFETIME: 624 case SSH_AGENT_CONSTRAIN_LIFETIME:
621 death = time(NULL) + buffer_get_int(&e->request); 625 death = time(NULL) + buffer_get_int(&e->request);
622 break; 626 break;
@@ -624,7 +628,11 @@ process_add_smartcard_key (SocketEntry *e)
624 confirm = 1; 628 confirm = 1;
625 break; 629 break;
626 default: 630 default:
627 break; 631 error("process_add_smartcard_key: "
632 "Unknown constraint type %d", type);
633 xfree(sc_reader_id);
634 xfree(pin);
635 goto send;
628 } 636 }
629 } 637 }
630 if (lifetime && !death) 638 if (lifetime && !death)