[PATCH 06/12] lib: fwts_battery: use strncpy instead of strcpy
Colin King
colin.king at canonical.com
Sun Nov 4 22:19:44 UTC 2012
From: Colin Ian King <colin.king at canonical.com>
Use the safer strncpy instead of strcpy. This means we also
need to add the size of the name paramater in fwts_battery_get_name.
Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
src/acpi/battery/battery.c | 2 +-
src/lib/include/fwts_battery.h | 2 +-
src/lib/src/fwts_battery.c | 17 ++++++++++-------
3 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/acpi/battery/battery.c b/src/acpi/battery/battery.c
index 79e30e2..ab6dd33 100644
--- a/src/acpi/battery/battery.c
+++ b/src/acpi/battery/battery.c
@@ -235,7 +235,7 @@ static void do_battery_test(fwts_framework *fw, int index)
*state = '\0';
- fwts_battery_get_name(fw, index, name);
+ fwts_battery_get_name(fw, index, name, sizeof(name));
fwts_log_info(fw, "Test battery '%s'.", name);
diff --git a/src/lib/include/fwts_battery.h b/src/lib/include/fwts_battery.h
index 1cdfdc1..3d74088 100644
--- a/src/lib/include/fwts_battery.h
+++ b/src/lib/include/fwts_battery.h
@@ -31,6 +31,6 @@ bool fwts_battery_check_trip_point_support(fwts_framework *fw, const int index);
int fwts_battery_set_trip_point(fwts_framework *fw, const int index, const int trip_point);
int fwts_battery_get_trip_point(fwts_framework *fw, const int index, int *trip_point);
int fwts_battery_get_capacity(fwts_framework *fw, const int type, const int index, uint32_t *capacity_mAh, uint32_t *capacity_mWh);
-int fwts_battery_get_name(fwts_framework *fw, const int index, char *name);
+int fwts_battery_get_name(fwts_framework *fw, const int index, char *name, const size_t name_len);
#endif
diff --git a/src/lib/src/fwts_battery.c b/src/lib/src/fwts_battery.c
index fc231c5..b5a728e 100644
--- a/src/lib/src/fwts_battery.c
+++ b/src/lib/src/fwts_battery.c
@@ -211,7 +211,8 @@ static int fwts_battery_get_count_proc_fs(DIR *dir, int *count)
static int fwts_battery_get_name_sys_fs(
DIR *dir,
const int index,
- char *name)
+ char *name,
+ const size_t name_len)
{
struct dirent *entry;
char path[PATH_MAX];
@@ -237,7 +238,7 @@ static int fwts_battery_get_name_sys_fs(
if (!match)
continue;
- strcpy(name, entry->d_name);
+ strncpy(name, entry->d_name, name_len);
return FWTS_OK;
}
} while (entry);
@@ -248,7 +249,8 @@ static int fwts_battery_get_name_sys_fs(
static int fwts_battery_get_name_proc_fs(
DIR *dir,
const int index,
- char *name)
+ char *name,
+ const size_t name_len)
{
struct dirent *entry;
int i = 0;
@@ -261,7 +263,7 @@ static int fwts_battery_get_name_proc_fs(
if (!match)
continue;
- strcpy(name, entry->d_name);
+ strncpy(name, entry->d_name, name_len);
return FWTS_OK;
}
} while (entry);
@@ -628,7 +630,8 @@ int fwts_battery_get_cycle_count(
int fwts_battery_get_name(
fwts_framework *fw,
const int index,
- char *name)
+ char *name,
+ const size_t name_len)
{
int ret;
DIR *dir;
@@ -636,10 +639,10 @@ int fwts_battery_get_name(
FWTS_UNUSED(fw);
if ((dir = opendir(FWTS_SYS_CLASS_POWER_SUPPLY)) != NULL) {
- ret = fwts_battery_get_name_sys_fs(dir, index, name);
+ ret = fwts_battery_get_name_sys_fs(dir, index, name, name_len);
closedir(dir);
} else if ((dir = opendir(FWTS_PROC_ACPI_BATTERY)) != NULL) {
- ret = fwts_battery_get_name_proc_fs(dir, index, name);
+ ret = fwts_battery_get_name_proc_fs(dir, index, name, name_len);
closedir(dir);
} else {
return FWTS_ERROR;
--
1.7.10.4
More information about the fwts-devel
mailing list