aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraham Leggett <minfrin@apache.org>2024-08-30 15:07:05 +0000
committerGraham Leggett <minfrin@apache.org>2024-08-30 15:07:05 +0000
commitf1886c45ee8253653eef1b3dc18b3aed953df0b0 (patch)
tree57b98764a5ecfcc48050d22c3c45541b1d08d772
parent0b10ac38d89444d345e94af361c30a8a18d6c879 (diff)
downloadapr-f1886c45ee8253653eef1b3dc18b3aed953df0b0.tar.gz
apr-f1886c45ee8253653eef1b3dc18b3aed953df0b0.zip
apr_buffer: Advance buffer during apr_buffer_pstrncat().
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1920293 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--buffer/apr_buffer.c1
-rw-r--r--test/abts_tests.h2
-rw-r--r--test/testbuffer.c14
3 files changed, 10 insertions, 7 deletions
diff --git a/buffer/apr_buffer.c b/buffer/apr_buffer.c
index 073bac0cb..4efd1ef75 100644
--- a/buffer/apr_buffer.c
+++ b/buffer/apr_buffer.c
@@ -394,6 +394,7 @@ APR_DECLARE(char *) apr_buffer_pstrncat(apr_pool_t *p, const apr_buffer_t *buf,
else {
if (APR_BUFFER_PLAIN == flags) {
memcpy(dst, src->d.mem, src->size);
+ dst += src->size;
}
else if (APR_BUFFER_BASE64 == flags) {
apr_size_t b64len;
diff --git a/test/abts_tests.h b/test/abts_tests.h
index 7dbd9aeac..0437aa4ff 100644
--- a/test/abts_tests.h
+++ b/test/abts_tests.h
@@ -74,6 +74,7 @@ const struct testlist {
{testuri},
{testuuid},
{testbuckets},
+ {testbuffer},
{testpass},
{testbase64},
{testmd4},
@@ -94,7 +95,6 @@ const struct testlist {
{testsiphash},
{testjson},
{testjose},
- {testbuffer},
{testldap}
};
diff --git a/test/testbuffer.c b/test/testbuffer.c
index 1453ae5ea..fd4d7edc3 100644
--- a/test/testbuffer.c
+++ b/test/testbuffer.c
@@ -167,7 +167,7 @@ static void test_buffers(abts_case *tc, void *data)
apr_pool_t *pool;
apr_array_header_t *vals;
- apr_buffer_t src[2];
+ apr_buffer_t src[4];
apr_buffer_t *dst;
char *str;
@@ -180,11 +180,13 @@ static void test_buffers(abts_case *tc, void *data)
/* populate our source buffers */
apr_buffer_mem_set(&src[0], test_memory, sizeof(test_memory));
apr_buffer_str_set(&src[1], test_string, strlen(test_string));
+ apr_buffer_mem_set(&src[2], test_memory, sizeof(test_memory));
+ apr_buffer_str_set(&src[3], test_string, strlen(test_string));
/* duplicate the source buffers, allocating memory from a pool */
- vals = apr_array_make(pool, 2, sizeof(apr_buffer_t));
- apr_buffer_arraydup((apr_buffer_t **)(&vals->elts), src, test_buffers_palloc, pool, 2);
- vals->nelts = 2;
+ vals = apr_array_make(pool, 4, sizeof(apr_buffer_t));
+ apr_buffer_arraydup((apr_buffer_t **)(&vals->elts), src, test_buffers_palloc, pool, 4);
+ vals->nelts = 4;
dst = apr_array_pop(vals);
@@ -201,10 +203,10 @@ static void test_buffers(abts_case *tc, void *data)
ABTS_ASSERT(tc, "buffer copy fail",
!apr_buffer_cmp(dst, &src[1]));
- str = apr_buffer_pstrncat(pool, &src[0], 2, "; ", APR_BUFFER_BASE64, &len);
+ str = apr_buffer_pstrncat(pool, &src[0], 4, "; ", APR_BUFFER_BASE64, &len);
ABTS_ASSERT(tc, "buffer strcat fail",
- !strcmp(str, "AQIDBA==; Hello"));
+ !strcmp(str, "AQIDBA==; Hello; AQIDBA==; Hello"));
apr_pool_destroy(pool);
}