[MERGED] libosmocore[master]: tlv_test.c: Fix compilation warnings

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Pau Espin Pedrol gerrit-no-reply at lists.osmocom.org
Sun Jun 18 19:00:47 UTC 2017


Pau Espin Pedrol has submitted this change and it was merged.

Change subject: tlv_test.c: Fix compilation warnings
......................................................................


tlv_test.c: Fix compilation warnings

Several warnings like the one below are fixed:
warning: array subscript is below array bounds [-Warray-bounds]
  uint8_t *unchanged_ptr = buf - 1;

Change-Id: I35d7d926939c14700cbca732bd64e588c75424b4
---
M tests/tlv/tlv_test.c
1 file changed, 25 insertions(+), 19 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/tests/tlv/tlv_test.c b/tests/tlv/tlv_test.c
index c571c3b..87b002f 100644
--- a/tests/tlv/tlv_test.c
+++ b/tests/tlv/tlv_test.c
@@ -70,23 +70,24 @@
 static void check_tlv_match_data_len(size_t data_len, uint8_t tag, size_t len,
 				     const uint8_t *test_data)
 {
-	uint8_t buf[300] = {0};
+	uint8_t buf[301] = {0};
+	*buf = 0xfe;
 
-	uint8_t *unchanged_ptr = buf - 1;
+	uint8_t *unchanged_ptr = buf;
 	size_t unchanged_len = 0xdead;
 	size_t tmp_data_len = data_len;
 	uint8_t *value = unchanged_ptr;
 	size_t value_len = unchanged_len;
-	uint8_t *data = buf;
+	uint8_t *data = buf + 1;
 
-	OSMO_ASSERT(data_len <= sizeof(buf));
+	OSMO_ASSERT(data_len <= sizeof(buf) - 1);
 
 	tlv_put(data, tag, len, test_data);
 	if (data_len < len + 2) {
 		OSMO_ASSERT(-1 == osmo_match_shift_tlv(&data, &tmp_data_len,
 					    tag, &value, &value_len));
 		OSMO_ASSERT(tmp_data_len == 0);
-		OSMO_ASSERT(data == buf + data_len);
+		OSMO_ASSERT(data == buf + 1 + data_len);
 		OSMO_ASSERT(value == unchanged_ptr);
 		OSMO_ASSERT(value_len == unchanged_len);
 	} else {
@@ -101,14 +102,15 @@
 					  uint8_t tag, size_t len,
 					  const uint8_t *test_data)
 {
-	uint8_t buf[300] = {0};
+	uint8_t buf[301] = {0};
+	*buf = 0xfe;
 
-	uint8_t *unchanged_ptr = buf - 1;
+	uint8_t *unchanged_ptr = buf;
 	size_t tmp_data_len = data_len;
 	uint8_t *value = unchanged_ptr;
-	uint8_t *data = buf;
+	uint8_t *data = buf + 1;
 
-	OSMO_ASSERT(data_len <= sizeof(buf));
+	OSMO_ASSERT(data_len <= sizeof(buf) - 1);
 
 	tv_fixed_put(data, tag, len, test_data);
 
@@ -116,7 +118,7 @@
 		OSMO_ASSERT(-1 == osmo_match_shift_tv_fixed(&data, &tmp_data_len,
 						 tag, len, &value));
 		OSMO_ASSERT(tmp_data_len == 0);
-		OSMO_ASSERT(data == buf + data_len);
+		OSMO_ASSERT(data == buf + 1 + data_len);
 		OSMO_ASSERT(value == unchanged_ptr);
 	} else {
 		OSMO_ASSERT(0 <= osmo_match_shift_tv_fixed(&data, &tmp_data_len,
@@ -128,14 +130,15 @@
 static void check_v_fixed_shift_data_len(size_t data_len,
 					 size_t len, const uint8_t *test_data)
 {
-	uint8_t buf[300] = {0};
+	uint8_t buf[301] = {0};
+	*buf = 0xfe;
 
-	uint8_t *unchanged_ptr = buf - 1;
+	uint8_t *unchanged_ptr = buf;
 	size_t tmp_data_len = data_len;
 	uint8_t *value = unchanged_ptr;
-	uint8_t *data = buf;
+	uint8_t *data = buf + 1;
 
-	OSMO_ASSERT(data_len <= sizeof(buf));
+	OSMO_ASSERT(data_len <= sizeof(buf) - 1);
 
 	memcpy(data, test_data, len);
 
@@ -143,7 +146,7 @@
 		OSMO_ASSERT(-1 == osmo_shift_v_fixed(&data, &tmp_data_len,
 						len, &value));
 		OSMO_ASSERT(tmp_data_len == 0);
-		OSMO_ASSERT(data == buf + data_len);
+		OSMO_ASSERT(data == buf + 1 + data_len);
 		OSMO_ASSERT(value == unchanged_ptr);
 	} else {
 		OSMO_ASSERT(0 <= osmo_shift_v_fixed(&data, &tmp_data_len,
@@ -155,21 +158,24 @@
 static void check_lv_shift_data_len(size_t data_len,
 				    size_t len, const uint8_t *test_data)
 {
-	uint8_t buf[300] = {0};
+	uint8_t buf[301] = {0};
+	*buf = 0xfe;
 
-	uint8_t *unchanged_ptr = buf - 1;
+	uint8_t *unchanged_ptr = buf;
 	size_t unchanged_len = 0xdead;
 	size_t tmp_data_len = data_len;
 	uint8_t *value = unchanged_ptr;
 	size_t value_len = unchanged_len;
-	uint8_t *data = buf;
+	uint8_t *data = buf + 1;
+
+	OSMO_ASSERT(data_len <= sizeof(buf) - 1);
 
 	lv_put(data, len, test_data);
 	if (data_len < len + 1) {
 		OSMO_ASSERT(-1 == osmo_shift_lv(&data, &tmp_data_len,
 					   &value, &value_len));
 		OSMO_ASSERT(tmp_data_len == 0);
-		OSMO_ASSERT(data == buf + data_len);
+		OSMO_ASSERT(data == buf + 1 + data_len);
 		OSMO_ASSERT(value == unchanged_ptr);
 		OSMO_ASSERT(value_len == unchanged_len);
 	} else {

-- 
To view, visit https://gerrit.osmocom.org/2952
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I35d7d926939c14700cbca732bd64e588c75424b4
Gerrit-PatchSet: 1
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de>



More information about the gerrit-log mailing list