From: James Jones Date: Tue, 9 Feb 2021 15:13:57 +0000 (-0600) Subject: Allow fr_dbuff_in_memcpy() from marker to uint8_t * (#3906) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d2fae12cccfb891e590565115a2e0f0150532673;p=thirdparty%2Ffreeradius-server.git Allow fr_dbuff_in_memcpy() from marker to uint8_t * (#3906) (and add a corresponding check in dbuff_tests) --- diff --git a/src/lib/util/dbuff.h b/src/lib/util/dbuff.h index 05d0b7e52e1..44c55a17f32 100644 --- a/src/lib/util/dbuff.h +++ b/src/lib/util/dbuff.h @@ -1507,7 +1507,7 @@ static inline ssize_t _fr_dbuff_out_memcpy_dbuff(uint8_t **out_p, fr_dbuff_t *ou */ #define fr_dbuff_out_memcpy(_out, _in, _outlen) \ _Generic((_out), \ - uint8_t * : _fr_dbuff_out_memcpy((uint8_t *)(_out), _fr_dbuff_current_ptr(_in), _in, _outlen), \ + uint8_t * : _fr_dbuff_out_memcpy((uint8_t *)(_out), _fr_dbuff_current_ptr(_in), fr_dbuff_ptr(_in), _outlen), \ fr_dbuff_t * : _fr_dbuff_out_memcpy_dbuff(_fr_dbuff_current_ptr((fr_dbuff_t *)_out), fr_dbuff_ptr((fr_dbuff_t *)(_out)), _fr_dbuff_current_ptr(_in), fr_dbuff_ptr(_in), _outlen), \ fr_dbuff_marker_t * : _fr_dbuff_out_memcpy_dbuff(_fr_dbuff_current_ptr((fr_dbuff_marker_t *)_out), fr_dbuff_ptr((fr_dbuff_marker_t *)(_out)), _fr_dbuff_current_ptr(_in), fr_dbuff_ptr(_in), _outlen) \ ) diff --git a/src/lib/util/dbuff_tests.c b/src/lib/util/dbuff_tests.c index 682687c0db3..f988bee5c71 100644 --- a/src/lib/util/dbuff_tests.c +++ b/src/lib/util/dbuff_tests.c @@ -525,6 +525,11 @@ static void test_dbuff_out(void) TEST_CHECK(fr_dbuff_out_memcpy(&dbuff2, &dbuff1, 4) == 4); TEST_CHECK(memcmp(fr_dbuff_start(&dbuff2), fr_dbuff_start(&dbuff1), 2) == 0 && memcmp(fr_dbuff_start(&dbuff2) + 2, fr_dbuff_start(&dbuff1) + 3, 4) == 0); + memset(buff3, 0, sizeof(buff3)); + fr_dbuff_set_to_start(&marker1); + TEST_CHECK(fr_dbuff_out_memcpy(buff3, &marker1, 4) == 4); + TEST_CHECK(memcmp(buff3, buff1, 4) == 0); + TEST_CHECK(fr_dbuff_current(&marker1) - fr_dbuff_start(&dbuff1) == 4); } TEST_LIST = {