projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
PR: 2742
[openssl.git]
/
crypto
/
asn1
/
asn_mime.c
diff --git
a/crypto/asn1/asn_mime.c
b/crypto/asn1/asn_mime.c
index 42536f77e30c290b2c25dfb0a749f60be503807d..6d8a9bf90f1d3d0ae502c8356d5ac25d7e8c89cc 100644
(file)
--- a/
crypto/asn1/asn_mime.c
+++ b/
crypto/asn1/asn_mime.c
@@
-377,8
+377,12
@@
static int asn1_output_data(BIO *out, BIO *data, ASN1_VALUE *val, int flags,
BIO *tmpbio;
const ASN1_AUX *aux = it->funcs;
ASN1_STREAM_ARG sarg;
BIO *tmpbio;
const ASN1_AUX *aux = it->funcs;
ASN1_STREAM_ARG sarg;
+ int rv = 1;
- if (!(flags & SMIME_DETACHED))
+ /* If data is not deteched or resigning then the output BIO is
+ * already set up to finalise when it is written through.
+ */
+ if (!(flags & SMIME_DETACHED) || (flags & PKCS7_REUSE_DIGEST))
{
SMIME_crlf_copy(data, out, flags);
return 1;
{
SMIME_crlf_copy(data, out, flags);
return 1;
@@
-405,7
+409,7
@@
static int asn1_output_data(BIO *out, BIO *data, ASN1_VALUE *val, int flags,
/* Finalize structure */
if (aux->asn1_cb(ASN1_OP_DETACHED_POST, &val, it, &sarg) <= 0)
/* Finalize structure */
if (aux->asn1_cb(ASN1_OP_DETACHED_POST, &val, it, &sarg) <= 0)
- r
eturn
0;
+ r
v =
0;
/* Now remove any digests prepended to the BIO */
/* Now remove any digests prepended to the BIO */
@@
-416,7
+420,7
@@
static int asn1_output_data(BIO *out, BIO *data, ASN1_VALUE *val, int flags,
sarg.ndef_bio = tmpbio;
}
sarg.ndef_bio = tmpbio;
}
- return
1
;
+ return
rv
;
}
}