Skip to content

Commit c920337

Browse files
Merge pull request #6891 from julek-wolfssl/zd/16849-i2d_x509
Advance pointer in wolfSSL_i2d_X509
2 parents 026c4bc + 8f60fb0 commit c920337

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
@@ -7465,6 +7465,7 @@ int wolfSSL_i2d_X509(WOLFSSL_X509* x509, unsigned char** out)
74657465
{
74667466
const unsigned char* der;
74677467
int derSz = 0;
7468+
int advance = 1;
74687469

74697470
WOLFSSL_ENTER("wolfSSL_i2d_X509");
74707471

@@ -7485,10 +7486,14 @@ int wolfSSL_i2d_X509(WOLFSSL_X509* x509, unsigned char** out)
74857486
WOLFSSL_LEAVE("wolfSSL_i2d_X509", MEMORY_E);
74867487
return MEMORY_E;
74877488
}
7489+
advance = 0;
74887490
}
74897491

7490-
if (out != NULL)
7492+
if (out != NULL) {
74917493
XMEMCPY(*out, der, derSz);
7494+
if (advance)
7495+
*out += derSz;
7496+
}
74927497

74937498
WOLFSSL_LEAVE("wolfSSL_i2d_X509", derSz);
74947499
return derSz;

tests/api.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53025,6 +53025,31 @@ static int test_wolfSSL_X509_load_crl_file(void)
5302553025
return EXPECT_RESULT();
5302653026
}
5302753027

53028+
static int test_wolfSSL_i2d_X509(void)
53029+
{
53030+
EXPECT_DECLS;
53031+
#if defined(OPENSSL_EXTRA) && defined(USE_CERT_BUFFERS_2048) && !defined(NO_RSA)
53032+
const unsigned char* cert_buf = server_cert_der_2048;
53033+
unsigned char* out = NULL;
53034+
unsigned char* tmp = NULL;
53035+
X509* cert = NULL;
53036+
53037+
ExpectNotNull(d2i_X509(&cert, &cert_buf, sizeof_server_cert_der_2048));
53038+
/* Pointer should be advanced */
53039+
ExpectPtrGT(cert_buf, server_cert_der_2048);
53040+
ExpectIntGT(i2d_X509(cert, &out), 0);
53041+
ExpectNotNull(out);
53042+
tmp = out;
53043+
ExpectIntGT(i2d_X509(cert, &tmp), 0);
53044+
ExpectPtrGT(tmp, out);
53045+
53046+
if (out != NULL)
53047+
XFREE(out, NULL, DYNAMIC_TYPE_OPENSSL);
53048+
X509_free(cert);
53049+
#endif
53050+
return EXPECT_RESULT();
53051+
}
53052+
5302853053
static int test_wolfSSL_d2i_X509_REQ(void)
5302953054
{
5303053055
EXPECT_DECLS;
@@ -67724,6 +67749,7 @@ TEST_CASE testCases[] = {
6772467749
TEST_DECL(test_wolfSSL_X509_set_version),
6772567750
TEST_DECL(test_wolfSSL_X509_get_serialNumber),
6772667751
TEST_DECL(test_wolfSSL_X509_CRL),
67752+
TEST_DECL(test_wolfSSL_i2d_X509),
6772767753
TEST_DECL(test_wolfSSL_d2i_X509_REQ),
6772867754
TEST_DECL(test_wolfSSL_PEM_read_X509),
6772967755
TEST_DECL(test_wolfSSL_X509_check_ca),

0 commit comments

Comments
 (0)