diff options
author | Greg Hudson <ghudson@mit.edu> | 2009-02-12 18:21:33 +0000 |
---|---|---|
committer | Greg Hudson <ghudson@mit.edu> | 2009-02-12 18:21:33 +0000 |
commit | bcffa165ee7841337bfbbab5043e7bddb5ef7fca (patch) | |
tree | ac81d854883525f28b2f9561e952d8870329a730 /src/lib/krb5/asn.1/asn1_encode.c | |
parent | a325faadc86039d4e6ec876f49319251eb7afbc8 (diff) | |
download | krb5-bcffa165ee7841337bfbbab5043e7bddb5ef7fca.tar.gz krb5-bcffa165ee7841337bfbbab5043e7bddb5ef7fca.tar.xz krb5-bcffa165ee7841337bfbbab5043e7bddb5ef7fca.zip |
Modify asn12krb5_buf and asn1_do_full_encode to make output parameter
values well-defined on error. Clean up memory handling and an unused
variable in asn1_do_full_encode.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@21981 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/krb5/asn.1/asn1_encode.c')
-rw-r--r-- | src/lib/krb5/asn.1/asn1_encode.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/lib/krb5/asn.1/asn1_encode.c b/src/lib/krb5/asn.1/asn1_encode.c index d79546493..f67c8cfee 100644 --- a/src/lib/krb5/asn.1/asn1_encode.c +++ b/src/lib/krb5/asn.1/asn1_encode.c @@ -675,10 +675,13 @@ krb5int_asn1_do_full_encode(const void *rep, krb5_data **code, { unsigned int length; asn1_error_code retval; - unsigned int sum = 0; asn1buf *buf = NULL; + krb5_data *d; + + *code = NULL; - if (rep == NULL) return ASN1_MISSING_FIELD; + if (rep == NULL) + return ASN1_MISSING_FIELD; retval = asn1buf_create(&buf); if (retval) @@ -686,9 +689,12 @@ krb5int_asn1_do_full_encode(const void *rep, krb5_data **code, retval = krb5int_asn1_encode_a_thing(buf, rep, a, &length); if (retval) - return retval; - sum += length; - retval = asn12krb5_buf(buf, code); + goto cleanup; + retval = asn12krb5_buf(buf, &d); + if (retval) + goto cleanup; + *code = d; +cleanup: asn1buf_destroy(&buf); return retval; } |