diff options
author | David Barksdale <amatus@amat.us> | 2017-10-09 14:50:30 -0500 |
---|---|---|
committer | David Barksdale <amatus@amat.us> | 2017-10-09 14:50:30 -0500 |
commit | 567e54b97c4d354cff9aa7f6841ae90b251fbe70 (patch) | |
tree | e79491f78aa691500c4d5e0ddf520adfbabf756c /src/util/test_crypto_paillier.c | |
parent | 6107aebdf21a59834c3fe0eb6d3d664f1827c7bc (diff) | |
download | gnunet-567e54b97c4d354cff9aa7f6841ae90b251fbe70.tar.gz gnunet-567e54b97c4d354cff9aa7f6841ae90b251fbe70.zip |
Fix leaks in CRYPTO_paillier and test
Diffstat (limited to 'src/util/test_crypto_paillier.c')
-rw-r--r-- | src/util/test_crypto_paillier.c | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/src/util/test_crypto_paillier.c b/src/util/test_crypto_paillier.c index 9950978c1..1e7e0b301 100644 --- a/src/util/test_crypto_paillier.c +++ b/src/util/test_crypto_paillier.c | |||
@@ -37,6 +37,7 @@ test_crypto () | |||
37 | struct GNUNET_CRYPTO_PaillierCiphertext ciphertext; | 37 | struct GNUNET_CRYPTO_PaillierCiphertext ciphertext; |
38 | struct GNUNET_CRYPTO_PaillierPublicKey public_key; | 38 | struct GNUNET_CRYPTO_PaillierPublicKey public_key; |
39 | struct GNUNET_CRYPTO_PaillierPrivateKey private_key; | 39 | struct GNUNET_CRYPTO_PaillierPrivateKey private_key; |
40 | int ret = 0; | ||
40 | 41 | ||
41 | GNUNET_CRYPTO_paillier_create (&public_key, | 42 | GNUNET_CRYPTO_paillier_create (&public_key, |
42 | &private_key); | 43 | &private_key); |
@@ -54,7 +55,6 @@ test_crypto () | |||
54 | &public_key, | 55 | &public_key, |
55 | &ciphertext, | 56 | &ciphertext, |
56 | plaintext_result); | 57 | plaintext_result); |
57 | |||
58 | if (0 != gcry_mpi_cmp (plaintext, | 58 | if (0 != gcry_mpi_cmp (plaintext, |
59 | plaintext_result)) | 59 | plaintext_result)) |
60 | { | 60 | { |
@@ -65,9 +65,11 @@ test_crypto () | |||
65 | plaintext); | 65 | plaintext); |
66 | gcry_log_debugmpi ("\n", | 66 | gcry_log_debugmpi ("\n", |
67 | plaintext_result); | 67 | plaintext_result); |
68 | return 1; | 68 | ret = 1; |
69 | } | 69 | } |
70 | return 0; | 70 | gcry_mpi_release (plaintext); |
71 | gcry_mpi_release (plaintext_result); | ||
72 | return ret; | ||
71 | } | 73 | } |
72 | 74 | ||
73 | 75 | ||
@@ -84,6 +86,7 @@ test_hom_simple (unsigned int a, | |||
84 | struct GNUNET_CRYPTO_PaillierCiphertext c_result; | 86 | struct GNUNET_CRYPTO_PaillierCiphertext c_result; |
85 | struct GNUNET_CRYPTO_PaillierPublicKey public_key; | 87 | struct GNUNET_CRYPTO_PaillierPublicKey public_key; |
86 | struct GNUNET_CRYPTO_PaillierPrivateKey private_key; | 88 | struct GNUNET_CRYPTO_PaillierPrivateKey private_key; |
89 | int ret = 0; | ||
87 | 90 | ||
88 | GNUNET_CRYPTO_paillier_create (&public_key, | 91 | GNUNET_CRYPTO_paillier_create (&public_key, |
89 | &private_key); | 92 | &private_key); |
@@ -119,9 +122,13 @@ test_hom_simple (unsigned int a, | |||
119 | "GNUNET_CRYPTO_paillier failed simple math!\n"); | 122 | "GNUNET_CRYPTO_paillier failed simple math!\n"); |
120 | gcry_log_debugmpi ("got ", hom_result); | 123 | gcry_log_debugmpi ("got ", hom_result); |
121 | gcry_log_debugmpi ("wanted ", result); | 124 | gcry_log_debugmpi ("wanted ", result); |
122 | return 1; | 125 | ret = 1; |
123 | } | 126 | } |
124 | return 0; | 127 | gcry_mpi_release (m1); |
128 | gcry_mpi_release (m2); | ||
129 | gcry_mpi_release (result); | ||
130 | gcry_mpi_release (hom_result); | ||
131 | return ret; | ||
125 | } | 132 | } |
126 | 133 | ||
127 | 134 | ||
@@ -168,7 +175,8 @@ test_hom () | |||
168 | fprintf (stderr, | 175 | fprintf (stderr, |
169 | "GNUNET_CRYPTO_paillier_encrypt 1 failed, should return 1 allowed operation, got %d!\n", | 176 | "GNUNET_CRYPTO_paillier_encrypt 1 failed, should return 1 allowed operation, got %d!\n", |
170 | ret); | 177 | ret); |
171 | return 1; | 178 | ret = 1; |
179 | goto out; | ||
172 | } | 180 | } |
173 | if (2 != (ret = GNUNET_CRYPTO_paillier_encrypt (&public_key, | 181 | if (2 != (ret = GNUNET_CRYPTO_paillier_encrypt (&public_key, |
174 | m2, | 182 | m2, |
@@ -178,7 +186,8 @@ test_hom () | |||
178 | fprintf (stderr, | 186 | fprintf (stderr, |
179 | "GNUNET_CRYPTO_paillier_encrypt 2 failed, should return 2 allowed operation, got %d!\n", | 187 | "GNUNET_CRYPTO_paillier_encrypt 2 failed, should return 2 allowed operation, got %d!\n", |
180 | ret); | 188 | ret); |
181 | return 1; | 189 | ret = 1; |
190 | goto out; | ||
182 | } | 191 | } |
183 | 192 | ||
184 | if (0 != (ret = GNUNET_CRYPTO_paillier_hom_add (&public_key, | 193 | if (0 != (ret = GNUNET_CRYPTO_paillier_hom_add (&public_key, |
@@ -189,7 +198,8 @@ test_hom () | |||
189 | fprintf (stderr, | 198 | fprintf (stderr, |
190 | "GNUNET_CRYPTO_paillier_hom_add failed, expected 0 remaining operations, got %d!\n", | 199 | "GNUNET_CRYPTO_paillier_hom_add failed, expected 0 remaining operations, got %d!\n", |
191 | ret); | 200 | ret); |
192 | return 1; | 201 | ret = 1; |
202 | goto out; | ||
193 | } | 203 | } |
194 | 204 | ||
195 | GNUNET_CRYPTO_paillier_decrypt (&private_key, | 205 | GNUNET_CRYPTO_paillier_decrypt (&private_key, |
@@ -203,9 +213,14 @@ test_hom () | |||
203 | "GNUNET_CRYPTO_paillier miscalculated with large numbers!\n"); | 213 | "GNUNET_CRYPTO_paillier miscalculated with large numbers!\n"); |
204 | gcry_log_debugmpi ("got", hom_result); | 214 | gcry_log_debugmpi ("got", hom_result); |
205 | gcry_log_debugmpi ("wanted", result); | 215 | gcry_log_debugmpi ("wanted", result); |
206 | return 1; | 216 | ret = 1; |
207 | } | 217 | } |
208 | return 0; | 218 | out: |
219 | gcry_mpi_release (m1); | ||
220 | gcry_mpi_release (m2); | ||
221 | gcry_mpi_release (result); | ||
222 | gcry_mpi_release (hom_result); | ||
223 | return ret; | ||
209 | } | 224 | } |
210 | 225 | ||
211 | 226 | ||