summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hw/board/board.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/hw/board/board.c b/hw/board/board.c
index d8bb35a..2cbc583 100644
--- a/hw/board/board.c
+++ b/hw/board/board.c
@@ -46,6 +46,7 @@ static int get_serialno_from_dat(void)
{
FILE *fp;
char buffer[DATA_BUFF_MAX], *p, *q;
+ int len;
fp = fopen(SERIAL_PATH_NAME, "r");
if (!fp) {
@@ -62,7 +63,9 @@ static int get_serialno_from_dat(void)
q = strchrnul(p, '\n');
*q = '\0';
- strcpy(info.serial, p);
+ len = strlen(p) > DATA_BUFF_MAX-1 ? DATA_BUFF_MAX-1 : strlen(p);
+ strncpy(info.serial, p, len);
+ info.serial[len] = '\0';
info.serial_len = strlen(p);
fclose(fp);
@@ -73,6 +76,7 @@ static int get_serialno_from_cpuinfo(void)
{
FILE *fp;
char line[LINE_LEN], *p, *q;
+ int len;
fp = fopen(CPUINFO_PATH, "r");
if (!fp) {
@@ -97,7 +101,9 @@ static int get_serialno_from_cpuinfo(void)
q = strchrnul(p, '\n');
*q = '\0';
- strcpy(info.serial, p);
+ len = strlen(p) > DATA_BUFF_MAX-1 ? DATA_BUFF_MAX-1 : strlen(p);
+ strncpy(info.serial, p, len);
+ info.serial[len] = '\0';
info.serial_len = strlen(p);
fclose(fp);