summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohn Kohl <jtkohl@mit.edu>1990-05-18 10:47:32 +0000
committerJohn Kohl <jtkohl@mit.edu>1990-05-18 10:47:32 +0000
commit68e38d3270f3b03af8165e8e864083f1f2b06313 (patch)
treef3e49de701c70573abfffe023991771afeff9f4e /src
parent0d860a3117ba632976ddfa270ee1683b77b10e55 (diff)
downloadkrb5-68e38d3270f3b03af8165e8e864083f1f2b06313.tar.gz
krb5-68e38d3270f3b03af8165e8e864083f1f2b06313.tar.xz
krb5-68e38d3270f3b03af8165e8e864083f1f2b06313.zip
add padding area, and zero it (for encryption functions)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@885 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/lib/krb5/krb/encode_kdc.c10
-rw-r--r--src/lib/krb5/krb/encrypt_tk.c10
-rw-r--r--src/lib/krb5/krb/mk_priv.c10
-rw-r--r--src/lib/krb5/krb/mk_req_ext.c10
4 files changed, 37 insertions, 3 deletions
diff --git a/src/lib/krb5/krb/encode_kdc.c b/src/lib/krb5/krb/encode_kdc.c
index 89cd913b2a..3d4df54038 100644
--- a/src/lib/krb5/krb/encode_kdc.c
+++ b/src/lib/krb5/krb/encode_kdc.c
@@ -74,7 +74,15 @@ OLDDECLARG(krb5_data **, enc_rep)
eblock.crypto_entry = krb5_csarray[dec_rep->etype]->system;
dec_rep->enc_part.length = krb5_encrypt_size(scratch->length,
- eblock.crypto_entry);
+ eblock.crypto_entry);
+ /* add padding area, and zero it */
+ if (!(scratch->data = realloc(scratch->data, dec_rep->enc_part.length))) {
+ /* may destroy scratch->data */
+ xfree(scratch);
+ return ENOMEM;
+ }
+ bzero(scratch->data + scratch->length,
+ dec_rep->enc_part.length - scratch->length);
if (!(dec_rep->enc_part.data = malloc(dec_rep->enc_part.length))) {
retval = ENOMEM;
goto clean_scratch;
diff --git a/src/lib/krb5/krb/encrypt_tk.c b/src/lib/krb5/krb/encrypt_tk.c
index 813afe810b..f1aafbcde0 100644
--- a/src/lib/krb5/krb/encrypt_tk.c
+++ b/src/lib/krb5/krb/encrypt_tk.c
@@ -61,7 +61,15 @@ register krb5_ticket *dec_ticket;
eblock.crypto_entry = krb5_csarray[dec_ticket->etype]->system;
dec_ticket->enc_part.length = krb5_encrypt_size(scratch->length,
- eblock.crypto_entry);
+ eblock.crypto_entry);
+ /* add padding area, and zero it */
+ if (!(scratch->data = realloc(scratch->data, dec_ticket->enc_part.length))) {
+ /* may destroy scratch->data */
+ xfree(scratch);
+ return ENOMEM;
+ }
+ bzero(scratch->data + scratch->length,
+ dec_ticket->enc_part.length - scratch->length);
if (!(dec_ticket->enc_part.data = malloc(dec_ticket->enc_part.length))) {
retval = ENOMEM;
goto clean_scratch;
diff --git a/src/lib/krb5/krb/mk_priv.c b/src/lib/krb5/krb/mk_priv.c
index c6359d4bf5..c46648b77a 100644
--- a/src/lib/krb5/krb/mk_priv.c
+++ b/src/lib/krb5/krb/mk_priv.c
@@ -90,7 +90,15 @@ OLDDECLARG(krb5_data *, outbuf)
eblock.crypto_entry = krb5_csarray[etype]->system;
privmsg.enc_part.length = krb5_encrypt_size(scratch->length,
- eblock.crypto_entry);
+ eblock.crypto_entry);
+ /* add padding area, and zero it */
+ if (!(scratch->data = realloc(scratch->data, privmsg.enc_part.length))) {
+ /* may destroy scratch->data */
+ xfree(scratch);
+ return ENOMEM;
+ }
+ bzero(scratch->data + scratch->length,
+ privmsg.enc_part.length - scratch->length);
if (!(privmsg.enc_part.data = malloc(privmsg.enc_part.length))) {
retval = ENOMEM;
goto clean_scratch;
diff --git a/src/lib/krb5/krb/mk_req_ext.c b/src/lib/krb5/krb/mk_req_ext.c
index d65f529146..f0a124af68 100644
--- a/src/lib/krb5/krb/mk_req_ext.c
+++ b/src/lib/krb5/krb/mk_req_ext.c
@@ -123,6 +123,15 @@ krb5_data *outbuf;
eblock.crypto_entry = krb5_csarray[etype]->system;
request.authenticator.length = krb5_encrypt_size(scratch->length,
eblock.crypto_entry);
+ /* add padding area, and zero it */
+ if (!(scratch->data = realloc(scratch->data, request.authenticator.length))) {
+ /* may destroy scratch->data */
+ xfree(scratch);
+ retval = ENOMEM;
+ goto clean_ticket;
+ }
+ bzero(scratch->data + scratch->length,
+ request.authenticator.length - scratch->length);
if (!(request.authenticator.data = malloc(request.authenticator.length))) {
retval = ENOMEM;
goto clean_scratch;
@@ -168,6 +177,7 @@ krb5_data *outbuf;
cleanup_encpart();
clean_scratch:
cleanup_scratch();
+ clean_ticket:
cleanup_ticket();
return retval;