X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=crypt.c;h=b8a587cd0e55114f1ced030d5284adcd2d4a96b4;hp=f1e42d4a228f7c0c498ac505575b6a0f3667bf27;hb=e0545fd978a9583f9583b9bb35e5c25cb78c78f4;hpb=bd28ec9a64884d70917c4fdea1a3a70c91758f83 diff --git a/crypt.c b/crypt.c index f1e42d4a..b8a587cd 100644 --- a/crypt.c +++ b/crypt.c @@ -1,8 +1,4 @@ -/* - * Copyright (C) 2005 Andre Noll - * - * Licensed under the GPL v2. For licencing details see COPYING. - */ +/* Copyright (C) 2005 Andre Noll , see file COPYING. */ /** \file crypt.c Openssl-based encryption/decryption routines. */ @@ -23,6 +19,7 @@ #include "fd.h" #include "crypt_backend.h" #include "base64.h" +#include "portable_io.h" struct asymmetric_key { RSA *rsa; @@ -41,9 +38,9 @@ void get_random_bytes_or_die(unsigned char *buf, int num) } /* - * Read 64 bytes from /dev/urandom and adds them to the SSL PRNG. Seed the PRNG - * used by random() with a random seed obtained from SSL. If /dev/random is not - * readable the function calls exit(). + * Read 64 bytes from /dev/urandom and add them to the SSL PRNG. Seed the PRNG + * used by random(3) with a random seed obtained from SSL. If /dev/urandom is + * not readable, the function calls exit(). * * \sa RAND_load_file(3), \ref get_random_bytes_or_die(), srandom(3), * random(3), \ref para_random(). @@ -96,7 +93,7 @@ static int read_bignum(const unsigned char *buf, size_t len, BIGNUM **result) return -E_BIGNUM; if (p + 4 > end) return -E_BIGNUM; - bnsize = read_ssh_u32(p); + bnsize = read_u32_be(p); PARA_DEBUG_LOG("bnsize: %u\n", bnsize); p += 4; if (p + bnsize < p) @@ -157,8 +154,8 @@ int get_public_key(const char *key_file, struct asymmetric_key **result) goto out; ret = is_ssh_rsa_key(map, map_size); if (!ret) { - para_munmap(map, map_size); - return -E_SSH_PARSE; + ret = -E_SSH_PARSE; + goto out_unmap; } cp = map + ret; encoded_size = map_size - ret;