summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohn Kohl <jtkohl@mit.edu>1990-05-09 17:12:11 +0000
committerJohn Kohl <jtkohl@mit.edu>1990-05-09 17:12:11 +0000
commit021d31446fe0c7b5a77527126112a3c36d33cdf4 (patch)
treee9b9fd9bd6e933c5f30f002807c750dd35ef3a9a /src
parentee96d082bd52f21c490312333506ffe4d8bd8c79 (diff)
downloadkrb5-021d31446fe0c7b5a77527126112a3c36d33cdf4.tar.gz
krb5-021d31446fe0c7b5a77527126112a3c36d33cdf4.tar.xz
krb5-021d31446fe0c7b5a77527126112a3c36d33cdf4.zip
changes for new checksum interface
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@816 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/lib/krb5/krb/mk_safe.c16
-rw-r--r--src/lib/krb5/krb/rd_safe.c16
2 files changed, 24 insertions, 8 deletions
diff --git a/src/lib/krb5/krb/mk_safe.c b/src/lib/krb5/krb/mk_safe.c
index 5cd4c42707..405b7b3bd9 100644
--- a/src/lib/krb5/krb/mk_safe.c
+++ b/src/lib/krb5/krb/mk_safe.c
@@ -18,6 +18,7 @@ static char rcsid_mk_safe_c[] =
#include <krb5/copyright.h>
#include <krb5/krb5.h>
#include <krb5/krb5_err.h>
+#include <errno.h>
#include <krb5/asn1.h>
#include <stdio.h>
@@ -94,20 +95,27 @@ OLDDECLARG(krb5_data *, outbuf)
#define clean_scratch() {(void) bzero((char *)scratch->data, scratch->length); krb5_free_data(scratch);}
+ if (!(safe_checksum.contents = (krb5_octet *)
+ malloc(krb5_cksumarray[sumtype]->checksum_length))) {
+ clean_scratch();
+ return ENOMEM;
+ }
if (retval = (*(krb5_cksumarray[sumtype]->sum_func))(scratch->data,
- 0, /* XXX? */
- (krb5_pointer) key->contents,
scratch->length,
+ (krb5_pointer) key->contents,
key->length,
&safe_checksum)) {
+ xfree(safe_checksum.contents);
clean_scratch();
return retval;
}
safemsg.checksum = &safe_checksum;
clean_scratch();
- if (retval = encode_krb5_safe(&safemsg, &scratch))
+ if (retval = encode_krb5_safe(&safemsg, &scratch)) {
+ xfree(safe_checksum.contents);
return retval;
-
+ }
+ xfree(safe_checksum.contents);
*outbuf = *scratch;
free((char *)scratch);
diff --git a/src/lib/krb5/krb/rd_safe.c b/src/lib/krb5/krb/rd_safe.c
index f41648e1d0..c03a272c56 100644
--- a/src/lib/krb5/krb/rd_safe.c
+++ b/src/lib/krb5/krb/rd_safe.c
@@ -18,6 +18,7 @@ static char rcsid_rd_safe_c[] =
#include <krb5/copyright.h>
#include <krb5/krb5.h>
#include <krb5/krb5_err.h>
+#include <errno.h>
#include <krb5/asn1.h>
#include <stdio.h>
@@ -110,12 +111,21 @@ krb5_data *outbuf;
cleanup();
return retval;
}
+ message->checksum = his_cksum;
+ if (!(our_cksum.contents = (krb5_octet *)
+ malloc(krb5_cksumarray[his_cksum->checksum_type]->checksum_length))) {
+ cleanup();
+ return ENOMEM;
+ }
+
+#undef cleanup
+#define cleanup() {krb5_free_safe(message); xfree(our_cksum.contents);}
+
retval = (*(krb5_cksumarray[his_cksum->checksum_type]->
sum_func))(scratch->data,
- 0, /* XXX? */
- (krb5_pointer) key->contents,
scratch->length,
+ (krb5_pointer) key->contents,
key->length,
&our_cksum);
(void) bzero((char *)scratch->data, scratch->length);
@@ -126,8 +136,6 @@ krb5_data *outbuf;
return retval;
}
-#undef cleanup
-#define cleanup() {krb5_free_safe(message); xfree(our_cksum.contents);}
if (our_cksum.length != his_cksum->length ||
bcmp((char *)our_cksum.contents, (char *)his_cksum->contents,