aboutsummaryrefslogtreecommitdiff
path: root/src/lib/krb5
diff options
context:
space:
mode:
authorEzra Peisach <epeisach@mit.edu>2002-11-07 20:09:02 +0000
committerEzra Peisach <epeisach@mit.edu>2002-11-07 20:09:02 +0000
commit35e5db4310cce8362834f56d22290e572dc1851e (patch)
treeb663483f013d4d839bf89798f00049b4d4e3e4d2 /src/lib/krb5
parentd711b796ea530cab21c1bc5bb95b14ca337e34da (diff)
downloadkrb5-35e5db4310cce8362834f56d22290e572dc1851e.zip
krb5-35e5db4310cce8362834f56d22290e572dc1851e.tar.gz
krb5-35e5db4310cce8362834f56d22290e572dc1851e.tar.bz2
* asn1_k_encode.c (asn1_encode_sam_challenge_2): Test for error
returned from asn1buf_insert_oxtetstring and cleanup strctures properly. * asn1_k_decode.c (asn1_decode_sam_challenge_2_body): Change sequence_of/end_sequence_of to use sequence_of_no_tagvars/end_sequence_of_no_tagravs to avoid shadowing variables. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@14975 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/krb5')
-rw-r--r--src/lib/krb5/asn.1/ChangeLog11
-rw-r--r--src/lib/krb5/asn.1/asn1_k_decode.c4
-rw-r--r--src/lib/krb5/asn.1/asn1_k_encode.c15
3 files changed, 24 insertions, 6 deletions
diff --git a/src/lib/krb5/asn.1/ChangeLog b/src/lib/krb5/asn.1/ChangeLog
index a2fe870..81a8419 100644
--- a/src/lib/krb5/asn.1/ChangeLog
+++ b/src/lib/krb5/asn.1/ChangeLog
@@ -1,5 +1,16 @@
2002-11-07 Ezra Peisach <epeisach@bu.edu>
+ * asn1_k_encode.c (asn1_encode_sam_challenge_2): Test for error
+ returned from asn1buf_insert_oxtetstring and cleanup strctures
+ properly.
+
+ * asn1_k_decode.c (asn1_decode_sam_challenge_2_body): Change
+ sequence_of/end_sequence_of to use
+ sequence_of_no_tagvars/end_sequence_of_no_tagravs to avoid
+ shadowing variables.
+
+2002-11-07 Ezra Peisach <epeisach@bu.edu>
+
* asn1_k_encode.c (add_optstring): Add optional string only if
length > 0.
diff --git a/src/lib/krb5/asn.1/asn1_k_decode.c b/src/lib/krb5/asn.1/asn1_k_decode.c
index f075db0..0a827b1 100644
--- a/src/lib/krb5/asn.1/asn1_k_decode.c
+++ b/src/lib/krb5/asn.1/asn1_k_decode.c
@@ -821,8 +821,8 @@ asn1_error_code asn1_decode_sam_challenge_2(asn1buf *buf, krb5_sam_challenge_2 *
if (asn1class != CONTEXT_SPECIFIC || construction != CONSTRUCTED)
return ASN1_BAD_ID;
save = subbuf.next;
- { sequence_of(&subbuf);
- end_sequence_of(&subbuf);
+ { sequence_of_no_tagvars(&subbuf);
+ end_sequence_of_no_tagvars(&subbuf);
}
end = subbuf.next;
if ((val->sam_challenge_2_body.data = (char *) malloc(end - save)) == NULL)
diff --git a/src/lib/krb5/asn.1/asn1_k_encode.c b/src/lib/krb5/asn.1/asn1_k_encode.c
index ff15d70..9226f7c 100644
--- a/src/lib/krb5/asn.1/asn1_k_encode.c
+++ b/src/lib/krb5/asn.1/asn1_k_encode.c
@@ -807,14 +807,21 @@ asn1_error_code asn1_encode_sam_challenge_2(asn1buf *buf, const krb5_sam_challen
return ASN1_MISSING_FIELD;
asn1_addfield((const krb5_checksum **) val->sam_cksum, 1, asn1_encode_sequence_of_checksum);
- asn1buf_insert_octetstring(buf, val->sam_challenge_2_body.length,
- (unsigned char *)val->sam_challenge_2_body.data);
+ retval = asn1buf_insert_octetstring(buf, val->sam_challenge_2_body.length,
+ (unsigned char *)val->sam_challenge_2_body.data);
+ if(retval){
+ asn1buf_destroy(&buf);
+ return retval;
+ }
sum += val->sam_challenge_2_body.length;
retval = asn1_make_etag(buf, CONTEXT_SPECIFIC, 0,
val->sam_challenge_2_body.length, &length);
- if(retval) return retval;
+ if(retval) {
+ asn1buf_destroy(&buf);
+ return retval;
+ }
sum += length;
-
+
asn1_makeseq();
asn1_cleanup();
}