diff options
author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2017-03-08 18:30:45 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-05-22 13:28:31 +0000 |
commit | 1fe2647c5de6c460dd776787f039bbc51ed779a0 (patch) | |
tree | 528df25ecd3fbb7e4f151961aa8e8c7d651f61eb | |
parent | 5265bea76c90427d70257b7fac0f0b7d40a015cb (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.c | 10 |
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; } |