tests: net: buf: Fix byteorder test writing beyond buffer

Fix byteorder test writing past the data pointer. This would otherwise
have been caught by the assert, but net buf asserts were not enabled in
the test. Reset the buffer between different tests to re-use the same
16-byte buffer.

Turning on asserts gives:

starting test - net_buf_test_byte_order
ASSERTION FAIL [net_buf_simple_tailroom(buf) >= len] @
	ZEPHYR_BASE/subsys/net/buf.c:775
E: r0/a1:  0x00000004  r1/a2:  0x00000307  r2/a3:  0x00000000
E: r3/a4:  0x00006d79 r12/ip:  0x00000000 r14/lr:  0x000028ad
E:  xpsr:  0x61000000
E: Faulting instruction address (r15/pc): 0x000050b0
E: >>> ZEPHYR FATAL ERROR 4: Kernel panic on CPU 0

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
This commit is contained in:
Joakim Andersson 2019-12-23 16:16:24 +01:00 committed by Alberto Escolar
commit 0484c5af4d

View file

@ -484,6 +484,8 @@ static void net_buf_test_byte_order(void)
zassert_equal(u16, net_buf_pull_be16(buf),
"Invalid 16 bits byte order");
net_buf_reset(buf);
net_buf_add_le16(buf, u16);
net_buf_add_be16(buf, u16);
@ -492,6 +494,8 @@ static void net_buf_test_byte_order(void)
zassert_mem_equal(be16, net_buf_pull_mem(buf, sizeof(be16)),
sizeof(be16), "Invalid 16 bits byte order");
net_buf_reset(buf);
net_buf_add_mem(buf, &le24, sizeof(le24));
net_buf_add_mem(buf, &be24, sizeof(be24));
@ -499,6 +503,8 @@ static void net_buf_test_byte_order(void)
zassert_equal(u32, net_buf_pull_be24(buf),
"Invalid 24 bits byte order");
net_buf_reset(buf);
net_buf_add_le24(buf, u32);
net_buf_add_be24(buf, u32);
@ -507,6 +513,8 @@ static void net_buf_test_byte_order(void)
zassert_mem_equal(be24, net_buf_pull_mem(buf, sizeof(be24)),
sizeof(be24), "Invalid 24 bits byte order");
net_buf_reset(buf);
net_buf_add_mem(buf, &le32, sizeof(le32));
net_buf_add_mem(buf, &be32, sizeof(be32));
@ -514,6 +522,8 @@ static void net_buf_test_byte_order(void)
zassert_equal(u32, net_buf_pull_be32(buf),
"Invalid 32 bits byte order");
net_buf_reset(buf);
net_buf_add_le32(buf, u32);
net_buf_add_be32(buf, u32);
@ -522,6 +532,8 @@ static void net_buf_test_byte_order(void)
zassert_mem_equal(be32, net_buf_pull_mem(buf, sizeof(be32)),
sizeof(be32), "Invalid 32 bits byte order");
net_buf_reset(buf);
net_buf_add_mem(buf, &le48, sizeof(le48));
net_buf_add_mem(buf, &be48, sizeof(be48));
@ -529,6 +541,8 @@ static void net_buf_test_byte_order(void)
zassert_equal(u64, net_buf_pull_be48(buf),
"Invalid 48 bits byte order");
net_buf_reset(buf);
net_buf_add_le48(buf, u64);
net_buf_add_be48(buf, u64);
@ -537,6 +551,8 @@ static void net_buf_test_byte_order(void)
zassert_mem_equal(be48, net_buf_pull_mem(buf, sizeof(be48)),
sizeof(be48), "Invalid 48 bits byte order");
net_buf_reset(buf);
net_buf_add_mem(buf, &le64, sizeof(le64));
net_buf_add_mem(buf, &be64, sizeof(be64));
@ -544,6 +560,8 @@ static void net_buf_test_byte_order(void)
zassert_equal(u64, net_buf_pull_be64(buf),
"Invalid 64 bits byte order");
net_buf_reset(buf);
net_buf_add_le64(buf, u64);
net_buf_add_be64(buf, u64);