projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix memory leak in audioc.c.
[paraslash.git]
/
gcrypt.c
diff --git
a/gcrypt.c
b/gcrypt.c
index 775abd764902b53cf60930270fc6fea73a62e9a1..2f38f1a6cab16e606e3a5704cef61b7cad252b50 100644
(file)
--- a/
gcrypt.c
+++ b/
gcrypt.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (C) 2011 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2011
-2012
Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
@@
-7,7
+7,6
@@
/** \file gcrypt.c Libgrcypt-based encryption/decryption routines. */
#include <regex.h>
/** \file gcrypt.c Libgrcypt-based encryption/decryption routines. */
#include <regex.h>
-#include <stdbool.h>
#include <gcrypt.h>
#include "para.h"
#include <gcrypt.h>
#include "para.h"
@@
-164,7
+163,7
@@
static void pad_oaep(unsigned char *in, size_t in_len, unsigned char *out,
/* rfc 3447, section 7.1.2 */
static int unpad_oaep(unsigned char *in, size_t in_len, unsigned char *out,
size_t *out_len)
/* rfc 3447, section 7.1.2 */
static int unpad_oaep(unsigned char *in, size_t in_len, unsigned char *out,
size_t *out_len)
-{
int ret;
+{
unsigned char *masked_seed = in + 1;
unsigned char *db = in + 1 + HASH_SIZE;
unsigned char seed[HASH_SIZE], seed_mask[HASH_SIZE];
unsigned char *masked_seed = in + 1;
unsigned char *db = in + 1 + HASH_SIZE;
unsigned char seed[HASH_SIZE], seed_mask[HASH_SIZE];
@@
-189,7
+188,7
@@
static int unpad_oaep(unsigned char *in, size_t in_len, unsigned char *out,
p++;
*out_len = in + in_len - p;
memcpy(out, p, *out_len);
p++;
*out_len = in + in_len - p;
memcpy(out, p, *out_len);
- return
ret
;
+ return
1
;
}
struct asymmetric_key {
}
struct asymmetric_key {
@@
-587,7
+586,7
@@
static int get_asn_public_key(const char *key_file, struct asymmetric_key **resu
key = para_malloc(sizeof(*key));
key->sexp = sexp;
*result = key;
key = para_malloc(sizeof(*key));
key->sexp = sexp;
*result = key;
- ret = n_size
* 8
;
+ ret = n_size;
PARA_INFO_LOG("successfully read %u bit asn public key\n", n_size * 8);
release_e:
PARA_INFO_LOG("successfully read %u bit asn public key\n", n_size * 8);
release_e:
@@
-763,7
+762,9
@@
static int decode_rsa(gcry_sexp_t sexp, int key_size, unsigned char *outbuf,
PARA_DEBUG_LOG("decrypted buffer before unpad (%d bytes):\n",
key_size);
dump_buffer("non-unpadded decrypted buffer", oaep_buf, key_size);;
PARA_DEBUG_LOG("decrypted buffer before unpad (%d bytes):\n",
key_size);
dump_buffer("non-unpadded decrypted buffer", oaep_buf, key_size);;
- unpad_oaep(oaep_buf, key_size, outbuf, nbytes);
+ ret = unpad_oaep(oaep_buf, key_size, outbuf, nbytes);
+ if (ret < 0)
+ goto out_mpi_release;
PARA_DEBUG_LOG("decrypted buffer after unpad (%zu bytes):\n",
*nbytes);
dump_buffer("unpadded decrypted buffer", outbuf, *nbytes);;
PARA_DEBUG_LOG("decrypted buffer after unpad (%zu bytes):\n",
*nbytes);
dump_buffer("unpadded decrypted buffer", outbuf, *nbytes);;