summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbcook <>2018-08-05 13:30:04 +0000
committerbcook <>2018-08-05 13:30:04 +0000
commitd94f6c9208e326091c9c0989ba6ae67951b493f0 (patch)
treeccf5996a37941d3c2b8e5b2679a3239641a22d99 /src
parent9fb2e421d867d8869fcc0ded070590ae9beaa51f (diff)
downloadopenbsd-d94f6c9208e326091c9c0989ba6ae67951b493f0.tar.gz
openbsd-d94f6c9208e326091c9c0989ba6ae67951b493f0.tar.bz2
openbsd-d94f6c9208e326091c9c0989ba6ae67951b493f0.zip
In RSA_padding_add_PKCS1_OAEP, dbmask needs to be freed on failure.
ok tb@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/rsa/rsa_oaep.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/lib/libcrypto/rsa/rsa_oaep.c b/src/lib/libcrypto/rsa/rsa_oaep.c
index cd7af203b7..a62927506e 100644
--- a/src/lib/libcrypto/rsa/rsa_oaep.c
+++ b/src/lib/libcrypto/rsa/rsa_oaep.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: rsa_oaep.c,v 1.26 2017/01/29 17:49:23 beck Exp $ */ 1/* $OpenBSD: rsa_oaep.c,v 1.27 2018/08/05 13:30:04 bcook Exp $ */
2/* Written by Ulf Moeller. This software is distributed on an "AS IS" 2/* Written by Ulf Moeller. This software is distributed on an "AS IS"
3 basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. */ 3 basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. */
4 4
@@ -72,14 +72,18 @@ RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
72 } 72 }
73 73
74 if (MGF1(dbmask, emlen - SHA_DIGEST_LENGTH, seed, 74 if (MGF1(dbmask, emlen - SHA_DIGEST_LENGTH, seed,
75 SHA_DIGEST_LENGTH) < 0) 75 SHA_DIGEST_LENGTH) < 0) {
76 free(dbmask);
76 return 0; 77 return 0;
78 }
77 for (i = 0; i < emlen - SHA_DIGEST_LENGTH; i++) 79 for (i = 0; i < emlen - SHA_DIGEST_LENGTH; i++)
78 db[i] ^= dbmask[i]; 80 db[i] ^= dbmask[i];
79 81
80 if (MGF1(seedmask, SHA_DIGEST_LENGTH, db, 82 if (MGF1(seedmask, SHA_DIGEST_LENGTH, db,
81 emlen - SHA_DIGEST_LENGTH) < 0) 83 emlen - SHA_DIGEST_LENGTH) < 0) {
84 free(dbmask);
82 return 0; 85 return 0;
86 }
83 for (i = 0; i < SHA_DIGEST_LENGTH; i++) 87 for (i = 0; i < SHA_DIGEST_LENGTH; i++)
84 seed[i] ^= seedmask[i]; 88 seed[i] ^= seedmask[i];
85 89