Skip to content

Commit 8f60fb0

Browse files
committed
Advance pointer in wolfSSL_i2d_X509
1 parent a3bf7a6 commit 8f60fb0

2 files changed

Lines changed: 32 additions & 1 deletion

File tree

src/x509.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7460,6 +7460,7 @@ int wolfSSL_i2d_X509(WOLFSSL_X509* x509, unsigned char** out)
74607460
{
74617461
const unsigned char* der;
74627462
int derSz = 0;
7463+
int advance = 1;
74637464

74647465
WOLFSSL_ENTER("wolfSSL_i2d_X509");
74657466

@@ -7480,10 +7481,14 @@ int wolfSSL_i2d_X509(WOLFSSL_X509* x509, unsigned char** out)
74807481
WOLFSSL_LEAVE("wolfSSL_i2d_X509", MEMORY_E);
74817482
return MEMORY_E;
74827483
}
7484+
advance = 0;
74837485
}
74847486

7485-
if (out != NULL)
7487+
if (out != NULL) {
74867488
XMEMCPY(*out, der, derSz);
7489+
if (advance)
7490+
*out += derSz;
7491+
}
74877492

74887493
WOLFSSL_LEAVE("wolfSSL_i2d_X509", derSz);
74897494
return derSz;

tests/api.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53016,6 +53016,31 @@ static int test_wolfSSL_X509_load_crl_file(void)
5301653016
return EXPECT_RESULT();
5301753017
}
5301853018

53019+
static int test_wolfSSL_i2d_X509(void)
53020+
{
53021+
EXPECT_DECLS;
53022+
#if defined(OPENSSL_EXTRA) && defined(USE_CERT_BUFFERS_2048) && !defined(NO_RSA)
53023+
const unsigned char* cert_buf = server_cert_der_2048;
53024+
unsigned char* out = NULL;
53025+
unsigned char* tmp = NULL;
53026+
X509* cert = NULL;
53027+
53028+
ExpectNotNull(d2i_X509(&cert, &cert_buf, sizeof_server_cert_der_2048));
53029+
/* Pointer should be advanced */
53030+
ExpectPtrGT(cert_buf, server_cert_der_2048);
53031+
ExpectIntGT(i2d_X509(cert, &out), 0);
53032+
ExpectNotNull(out);
53033+
tmp = out;
53034+
ExpectIntGT(i2d_X509(cert, &tmp), 0);
53035+
ExpectPtrGT(tmp, out);
53036+
53037+
if (out != NULL)
53038+
XFREE(out, NULL, DYNAMIC_TYPE_OPENSSL);
53039+
X509_free(cert);
53040+
#endif
53041+
return EXPECT_RESULT();
53042+
}
53043+
5301953044
static int test_wolfSSL_d2i_X509_REQ(void)
5302053045
{
5302153046
EXPECT_DECLS;
@@ -67715,6 +67740,7 @@ TEST_CASE testCases[] = {
6771567740
TEST_DECL(test_wolfSSL_X509_set_version),
6771667741
TEST_DECL(test_wolfSSL_X509_get_serialNumber),
6771767742
TEST_DECL(test_wolfSSL_X509_CRL),
67743+
TEST_DECL(test_wolfSSL_i2d_X509),
6771867744
TEST_DECL(test_wolfSSL_d2i_X509_REQ),
6771967745
TEST_DECL(test_wolfSSL_PEM_read_X509),
6772067746
TEST_DECL(test_wolfSSL_X509_check_ca),

0 commit comments

Comments
 (0)