forked from wolfSSL/wolfssl
Advance pointer in wolfSSL_i2d_X509
This commit is contained in:
@ -7460,6 +7460,7 @@ int wolfSSL_i2d_X509(WOLFSSL_X509* x509, unsigned char** out)
|
|||||||
{
|
{
|
||||||
const unsigned char* der;
|
const unsigned char* der;
|
||||||
int derSz = 0;
|
int derSz = 0;
|
||||||
|
int advance = 1;
|
||||||
|
|
||||||
WOLFSSL_ENTER("wolfSSL_i2d_X509");
|
WOLFSSL_ENTER("wolfSSL_i2d_X509");
|
||||||
|
|
||||||
@ -7480,10 +7481,14 @@ int wolfSSL_i2d_X509(WOLFSSL_X509* x509, unsigned char** out)
|
|||||||
WOLFSSL_LEAVE("wolfSSL_i2d_X509", MEMORY_E);
|
WOLFSSL_LEAVE("wolfSSL_i2d_X509", MEMORY_E);
|
||||||
return MEMORY_E;
|
return MEMORY_E;
|
||||||
}
|
}
|
||||||
|
advance = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (out != NULL)
|
if (out != NULL) {
|
||||||
XMEMCPY(*out, der, derSz);
|
XMEMCPY(*out, der, derSz);
|
||||||
|
if (advance)
|
||||||
|
*out += derSz;
|
||||||
|
}
|
||||||
|
|
||||||
WOLFSSL_LEAVE("wolfSSL_i2d_X509", derSz);
|
WOLFSSL_LEAVE("wolfSSL_i2d_X509", derSz);
|
||||||
return derSz;
|
return derSz;
|
||||||
|
26
tests/api.c
26
tests/api.c
@ -53016,6 +53016,31 @@ static int test_wolfSSL_X509_load_crl_file(void)
|
|||||||
return EXPECT_RESULT();
|
return EXPECT_RESULT();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int test_wolfSSL_i2d_X509(void)
|
||||||
|
{
|
||||||
|
EXPECT_DECLS;
|
||||||
|
#if defined(OPENSSL_EXTRA) && defined(USE_CERT_BUFFERS_2048) && !defined(NO_RSA)
|
||||||
|
const unsigned char* cert_buf = server_cert_der_2048;
|
||||||
|
unsigned char* out = NULL;
|
||||||
|
unsigned char* tmp = NULL;
|
||||||
|
X509* cert = NULL;
|
||||||
|
|
||||||
|
ExpectNotNull(d2i_X509(&cert, &cert_buf, sizeof_server_cert_der_2048));
|
||||||
|
/* Pointer should be advanced */
|
||||||
|
ExpectPtrGT(cert_buf, server_cert_der_2048);
|
||||||
|
ExpectIntGT(i2d_X509(cert, &out), 0);
|
||||||
|
ExpectNotNull(out);
|
||||||
|
tmp = out;
|
||||||
|
ExpectIntGT(i2d_X509(cert, &tmp), 0);
|
||||||
|
ExpectPtrGT(tmp, out);
|
||||||
|
|
||||||
|
if (out != NULL)
|
||||||
|
XFREE(out, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
|
X509_free(cert);
|
||||||
|
#endif
|
||||||
|
return EXPECT_RESULT();
|
||||||
|
}
|
||||||
|
|
||||||
static int test_wolfSSL_d2i_X509_REQ(void)
|
static int test_wolfSSL_d2i_X509_REQ(void)
|
||||||
{
|
{
|
||||||
EXPECT_DECLS;
|
EXPECT_DECLS;
|
||||||
@ -67715,6 +67740,7 @@ TEST_CASE testCases[] = {
|
|||||||
TEST_DECL(test_wolfSSL_X509_set_version),
|
TEST_DECL(test_wolfSSL_X509_set_version),
|
||||||
TEST_DECL(test_wolfSSL_X509_get_serialNumber),
|
TEST_DECL(test_wolfSSL_X509_get_serialNumber),
|
||||||
TEST_DECL(test_wolfSSL_X509_CRL),
|
TEST_DECL(test_wolfSSL_X509_CRL),
|
||||||
|
TEST_DECL(test_wolfSSL_i2d_X509),
|
||||||
TEST_DECL(test_wolfSSL_d2i_X509_REQ),
|
TEST_DECL(test_wolfSSL_d2i_X509_REQ),
|
||||||
TEST_DECL(test_wolfSSL_PEM_read_X509),
|
TEST_DECL(test_wolfSSL_PEM_read_X509),
|
||||||
TEST_DECL(test_wolfSSL_X509_check_ca),
|
TEST_DECL(test_wolfSSL_X509_check_ca),
|
||||||
|
Reference in New Issue
Block a user