summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-03-08 18:30:45 +0100
committerHarald Welte <laforge@gnumonks.org>2017-05-22 13:28:31 +0000
commit1fe2647c5de6c460dd776787f039bbc51ed779a0 (patch)
tree528df25ecd3fbb7e4f151961aa8e8c7d651f61eb
parent5265bea76c90427d70257b7fac0f0b7d40a015cb (diff)
ipaccess-config: properly create swload
Instead of 20, use the actual buffer sizes of struct sw_load, which are 255. Previous code would truncate a longer string at 20 without(!) NUL termination. In the _len members, store the actual length copied. In previous code, if the source string were longer than 20, we would store only 20 (without NUL term) but still reflect the longer length of the source string. Fix both of these issues for sw_load.file_id / file_id_len and sw_load.file_version / file_version_len. Change-Id: I2e34a1348a290d3f58dd830d08da65b94b3270db
-rw-r--r--openbsc/src/ipaccess/ipaccess-config.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/openbsc/src/ipaccess/ipaccess-config.c b/openbsc/src/ipaccess/ipaccess-config.c
index 8685a4092..6822c06a6 100644
--- a/openbsc/src/ipaccess/ipaccess-config.c
+++ b/openbsc/src/ipaccess/ipaccess-config.c
@@ -609,11 +609,13 @@ static struct abis_nm_sw_desc *create_swload(struct sdp_header *header)
load = talloc_zero(tall_ctx_config, struct abis_nm_sw_desc);
- strncpy((char *)load->file_id, header->firmware_info.sw_part, 20);
- load->file_id_len = strlen(header->firmware_info.sw_part) + 1;
+ osmo_strlcpy((char *)load->file_id, header->firmware_info.sw_part,
+ sizeof(load->file_id));
+ load->file_id_len = strlen((char*)load->file_id) + 1;
- strncpy((char *)load->file_version, header->firmware_info.version, 20);
- load->file_version_len = strlen(header->firmware_info.version) + 1;
+ osmo_strlcpy((char *)load->file_version, header->firmware_info.version,
+ sizeof(load->file_version));
+ load->file_version_len = strlen((char*)load->file_version) + 1;
return load;
}