From f152b40faff5a1ebb5bfb011c11a60ecd9e6805b Mon Sep 17 00:00:00 2001 From: Olaf Meeuwissen Date: Sat, 19 Sep 2015 16:25:32 +0900 Subject: [PATCH] Prefer string concatenation over copying The `ibuf.product` byte array may contain embedded NUL characters. In that case the revision will not be visible as part of dev->sane.model. --- backend/ibm.c | 6 +++--- backend/ricoh.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/backend/ibm.c b/backend/ibm.c index 7b847d9c9..229753d4b 100644 --- a/backend/ibm.c +++ b/backend/ibm.c @@ -249,9 +249,9 @@ attach (const char *devnam, Ibm_Device ** devp) dev->sane.name = strdup (devnam); dev->sane.vendor = "IBM"; str = malloc (sizeof(ibuf.product) + sizeof(ibuf.revision) + 1); - strncpy (str, (char *)ibuf.product, sizeof(ibuf.product)); - strncpy (str + sizeof(ibuf.product), (char *)ibuf.revision, sizeof(ibuf.revision)); - str[sizeof(ibuf.product) + sizeof(ibuf.revision)] = '\0'; + str[0] = '\0'; + strncat (str, (char *)ibuf.product, sizeof(ibuf.product)); + strncat (str, (char *)ibuf.revision, sizeof(ibuf.revision)); dev->sane.model = str; dev->sane.type = "flatbed scanner"; diff --git a/backend/ricoh.c b/backend/ricoh.c index 40ab53936..8802e1e93 100644 --- a/backend/ricoh.c +++ b/backend/ricoh.c @@ -223,9 +223,9 @@ attach (const char *devnam, Ricoh_Device ** devp) dev->sane.name = strdup (devnam); dev->sane.vendor = "RICOH"; str = malloc (sizeof(ibuf.product) + sizeof(ibuf.revision) + 1); - strncpy (str, (char *)ibuf.product, sizeof(ibuf.product)); - strncpy (str + sizeof(ibuf.product), (char *)ibuf.revision, sizeof(ibuf.revision)); - str[sizeof(ibuf.product) + sizeof(ibuf.revision)] = '\0'; + str[0] = '\0'; + strncat (str, (char *)ibuf.product, sizeof(ibuf.product)); + strncat (str, (char *)ibuf.revision, sizeof(ibuf.revision)); dev->sane.model = str; dev->sane.type = "flatbed scanner";