From 0484c5af4dced1cac5830ca1c78ff16d42114d6b Mon Sep 17 00:00:00 2001 From: Joakim Andersson Date: Mon, 23 Dec 2019 16:16:24 +0100 Subject: [PATCH] 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 --- tests/net/buf/src/main.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/net/buf/src/main.c b/tests/net/buf/src/main.c index 5b2aeec6cc5..9b89e65c437 100644 --- a/tests/net/buf/src/main.c +++ b/tests/net/buf/src/main.c @@ -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);