]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Allow fr_dbuff_in_memcpy() from marker to uint8_t * (#3906)
authorJames Jones <jejones3141@gmail.com>
Tue, 9 Feb 2021 15:13:57 +0000 (09:13 -0600)
committerGitHub <noreply@github.com>
Tue, 9 Feb 2021 15:13:57 +0000 (15:13 +0000)
(and add a corresponding check in dbuff_tests)

src/lib/util/dbuff.h
src/lib/util/dbuff_tests.c

index 05d0b7e52e10aac9a6d8f797158da7561eed0287..44c55a17f3273453fed52cc974881a7564df3f0a 100644 (file)
@@ -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) \
        )
index 682687c0db3390e8a516fec95ba542435fd4bb06..f988bee5c713e80df2401aa485b2602b9503849c 100644 (file)
@@ -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 = {