diff options
Diffstat (limited to 'key.c')
-rw-r--r-- | key.c | 16 |
1 files changed, 9 insertions, 7 deletions
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: key.c,v 1.67 2006/08/03 03:34:42 deraadt Exp $ */ | 1 | /* $OpenBSD: key.c,v 1.68 2006/11/06 21:25:28 markus Exp $ */ |
2 | /* | 2 | /* |
3 | * read_bignum(): | 3 | * read_bignum(): |
4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | 4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
@@ -617,16 +617,18 @@ key_from_private(const Key *k) | |||
617 | switch (k->type) { | 617 | switch (k->type) { |
618 | case KEY_DSA: | 618 | case KEY_DSA: |
619 | n = key_new(k->type); | 619 | n = key_new(k->type); |
620 | BN_copy(n->dsa->p, k->dsa->p); | 620 | if ((BN_copy(n->dsa->p, k->dsa->p) == NULL) || |
621 | BN_copy(n->dsa->q, k->dsa->q); | 621 | (BN_copy(n->dsa->q, k->dsa->q) == NULL) || |
622 | BN_copy(n->dsa->g, k->dsa->g); | 622 | (BN_copy(n->dsa->g, k->dsa->g) == NULL) || |
623 | BN_copy(n->dsa->pub_key, k->dsa->pub_key); | 623 | (BN_copy(n->dsa->pub_key, k->dsa->pub_key) == NULL)) |
624 | fatal("key_from_private: BN_copy failed"); | ||
624 | break; | 625 | break; |
625 | case KEY_RSA: | 626 | case KEY_RSA: |
626 | case KEY_RSA1: | 627 | case KEY_RSA1: |
627 | n = key_new(k->type); | 628 | n = key_new(k->type); |
628 | BN_copy(n->rsa->n, k->rsa->n); | 629 | if ((BN_copy(n->rsa->n, k->rsa->n) == NULL) || |
629 | BN_copy(n->rsa->e, k->rsa->e); | 630 | (BN_copy(n->rsa->e, k->rsa->e) == NULL)) |
631 | fatal("key_from_private: BN_copy failed"); | ||
630 | break; | 632 | break; |
631 | default: | 633 | default: |
632 | fatal("key_from_private: unknown type %d", k->type); | 634 | fatal("key_from_private: unknown type %d", k->type); |