[10/13] installer: Replace all uses of strncpy with snprintf

Message ID 20240405125942.1803058-10-michael.tremer@ipfire.org
State Staged
Commit 874ec4b0495a957e7dd453463d719ac6ca14f4c9
Headers
Series [01/13] installer: Update language files |

Commit Message

Michael Tremer April 5, 2024, 12:59 p.m. UTC
  Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
 src/installer/hw.c   | 8 ++++----
 src/installer/main.c | 7 ++++---
 2 files changed, 8 insertions(+), 7 deletions(-)
  

Patch

diff --git a/src/installer/hw.c b/src/installer/hw.c
index 809a448a0..6bf05b185 100644
--- a/src/installer/hw.c
+++ b/src/installer/hw.c
@@ -324,6 +324,7 @@  static unsigned long long hw_block_device_get_size(const char* dev) {
 struct hw_disk** hw_find_disks(struct hw* hw, const char* sourcedrive) {
 	struct hw_disk** ret = hw_create_disks();
 	struct hw_disk** disks = ret;
+	char size_str[32];
 
 	// Determine the disk device of source if it is a partition
 	const char* sourcedisk = NULL;
@@ -388,7 +389,7 @@  struct hw_disk** hw_find_disks(struct hw* hw, const char* sourcedrive) {
 
 		disk->ref = 1;
 
-		strncpy(disk->path, dev_path, sizeof(disk->path));
+		snprintf(disk->path, sizeof(disk->path), "%s", dev_path);
 		const char* p = disk->path + 5;
 
 		disk->size = size;
@@ -401,7 +402,7 @@  struct hw_disk** hw_find_disks(struct hw* hw, const char* sourcedrive) {
 			vendor = udev_device_get_sysattr_value(dev, "manufacturer");
 
 		if (vendor)
-			strncpy(disk->vendor, vendor, sizeof(disk->vendor));
+			snprintf(disk->vendor, sizeof(disk->vendor), "%s", vendor);
 		else
 			*disk->vendor = '\0';
 
@@ -413,12 +414,11 @@  struct hw_disk** hw_find_disks(struct hw* hw, const char* sourcedrive) {
 			model = udev_device_get_sysattr_value(dev, "product");
 
 		if (model)
-			strncpy(disk->model, model, sizeof(disk->model));
+			snprintf(disk->model, sizeof(disk->model), "%s", model);
 		else
 			*disk->model = '\0';
 
 		// Format description
-		char size_str[STRING_SIZE];
 		snprintf(size_str, sizeof(size_str), "%4.1fGB", (double)disk->size / pow(1024, 3));
 
 		if (*disk->vendor && *disk->model) {
diff --git a/src/installer/main.c b/src/installer/main.c
index 20a8cc962..ecfcff2ec 100644
--- a/src/installer/main.c
+++ b/src/installer/main.c
@@ -310,7 +310,8 @@  static void parse_command_line(FILE* flog, struct config* c) {
 
 		char* token = strtok(cmdline, " ");
 		while (token) {
-			strncpy(buffer, token, sizeof(buffer));
+			snprintf(buffer, sizeof(buffer), "%s", token);
+
 			char* val = buffer;
 			char* key = strsep(&val, "=");
 
@@ -336,7 +337,7 @@  static void parse_command_line(FILE* flog, struct config* c) {
 
 			// download url
 			else if (strcmp(key, "installer.download-url") == 0) {
-				strncpy(c->download_url, val, sizeof(c->download_url));
+				snprintf(c->download_url, sizeof(c->download_url), "%s", val);
 				c->perform_download = 1;
 
 				// Require networking for the download
@@ -344,7 +345,7 @@  static void parse_command_line(FILE* flog, struct config* c) {
 
 			// postinstall script
 			} else if (strcmp(key, "installer.postinstall") == 0) {
-				strncpy(c->postinstall, val, sizeof(c->postinstall));
+				snprintf(c->postinstall, sizeof(c->postinstall), "%s", val);
 
 				// Require networking for the download
 				c->require_networking = 1;