We make sure the S/MIME decode op has not failed prior to using the returned value.
Monotone-Parent: 97fb6bc6ccca9d15df3776811dafe8ad42650b90 Monotone-Revision: 5d27deb440dabc83a208dec61d3b97f76d042614 Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2009-09-30T01:04:04 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
parent
a310c3826c
commit
b31270f358
|
@ -98,60 +98,63 @@
|
|||
subject = nil;
|
||||
issuer = nil;
|
||||
certs = NULL;
|
||||
|
||||
i = OBJ_obj2nid(p7->type);
|
||||
|
||||
if (i == NID_pkcs7_signed)
|
||||
|
||||
if (p7)
|
||||
{
|
||||
X509 *x;
|
||||
|
||||
certs=p7->d.sign->cert;
|
||||
|
||||
if (sk_X509_num(certs) > 0)
|
||||
i = OBJ_obj2nid(p7->type);
|
||||
|
||||
if (i == NID_pkcs7_signed)
|
||||
{
|
||||
BIO *buf;
|
||||
char p[256];
|
||||
|
||||
memset(p, 0, 256);
|
||||
x = sk_X509_value(certs,0);
|
||||
buf = BIO_new(BIO_s_mem());
|
||||
X509_NAME_print_ex(buf, X509_get_subject_name(x), 0, XN_FLAG_FN_SN);
|
||||
BIO_gets(buf, p, 256);
|
||||
subject = [NSString stringWithUTF8String: p];
|
||||
|
||||
memset(p, 0, 256);
|
||||
X509_NAME_print_ex(buf, X509_get_issuer_name(x), 0, XN_FLAG_FN_SN);
|
||||
BIO_gets(buf, p, 256);
|
||||
issuer = [NSString stringWithUTF8String: p];
|
||||
|
||||
BIO_free(buf);
|
||||
X509 *x;
|
||||
|
||||
certs=p7->d.sign->cert;
|
||||
|
||||
if (sk_X509_num(certs) > 0)
|
||||
{
|
||||
BIO *buf;
|
||||
char p[256];
|
||||
|
||||
memset(p, 0, 256);
|
||||
x = sk_X509_value(certs,0);
|
||||
buf = BIO_new(BIO_s_mem());
|
||||
X509_NAME_print_ex(buf, X509_get_subject_name(x), 0, XN_FLAG_FN_SN);
|
||||
BIO_gets(buf, p, 256);
|
||||
subject = [NSString stringWithUTF8String: p];
|
||||
|
||||
memset(p, 0, 256);
|
||||
X509_NAME_print_ex(buf, X509_get_issuer_name(x), 0, XN_FLAG_FN_SN);
|
||||
BIO_gets(buf, p, 256);
|
||||
issuer = [NSString stringWithUTF8String: p];
|
||||
|
||||
BIO_free(buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
err = ERR_get_error();
|
||||
if (err)
|
||||
{
|
||||
ERR_error_string_n (err, sslError, 1023);
|
||||
validSignature = NO;
|
||||
}
|
||||
else
|
||||
{
|
||||
x509Store = [self _setupVerify];
|
||||
validSignature = (PKCS7_verify(p7, NULL, x509Store, inData,
|
||||
NULL, PKCS7_DETACHED) == 1);
|
||||
|
||||
|
||||
err = ERR_get_error();
|
||||
if (err)
|
||||
ERR_error_string_n(err, sslError, 1023);
|
||||
|
||||
if (x509Store)
|
||||
X509_STORE_free (x509Store);
|
||||
{
|
||||
ERR_error_string_n (err, sslError, 1023);
|
||||
validSignature = NO;
|
||||
}
|
||||
else
|
||||
{
|
||||
x509Store = [self _setupVerify];
|
||||
validSignature = (PKCS7_verify(p7, NULL, x509Store, inData,
|
||||
NULL, PKCS7_DETACHED) == 1);
|
||||
|
||||
err = ERR_get_error();
|
||||
if (err)
|
||||
ERR_error_string_n(err, sslError, 1023);
|
||||
|
||||
if (x509Store)
|
||||
X509_STORE_free (x509Store);
|
||||
}
|
||||
|
||||
BIO_free (msgBio);
|
||||
if (inData)
|
||||
BIO_free (inData);
|
||||
}
|
||||
|
||||
BIO_free (msgBio);
|
||||
if (inData)
|
||||
BIO_free (inData);
|
||||
|
||||
|
||||
validationMessage = [NSMutableString string];
|
||||
|
||||
if (!validSignature)
|
||||
|
|
Loading…
Reference in a new issue