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.
merge-requests/1/head
Olaf Meeuwissen 2015-09-19 16:25:32 +09:00 zatwierdzone przez m. allan noah
rodzic 16dc9c87a6
commit f152b40faf
2 zmienionych plików z 6 dodań i 6 usunięć

Wyświetl plik

@ -249,9 +249,9 @@ attach (const char *devnam, Ibm_Device ** devp)
dev->sane.name = strdup (devnam); dev->sane.name = strdup (devnam);
dev->sane.vendor = "IBM"; dev->sane.vendor = "IBM";
str = malloc (sizeof(ibuf.product) + sizeof(ibuf.revision) + 1); str = malloc (sizeof(ibuf.product) + sizeof(ibuf.revision) + 1);
strncpy (str, (char *)ibuf.product, sizeof(ibuf.product)); str[0] = '\0';
strncpy (str + sizeof(ibuf.product), (char *)ibuf.revision, sizeof(ibuf.revision)); strncat (str, (char *)ibuf.product, sizeof(ibuf.product));
str[sizeof(ibuf.product) + sizeof(ibuf.revision)] = '\0'; strncat (str, (char *)ibuf.revision, sizeof(ibuf.revision));
dev->sane.model = str; dev->sane.model = str;
dev->sane.type = "flatbed scanner"; dev->sane.type = "flatbed scanner";

Wyświetl plik

@ -223,9 +223,9 @@ attach (const char *devnam, Ricoh_Device ** devp)
dev->sane.name = strdup (devnam); dev->sane.name = strdup (devnam);
dev->sane.vendor = "RICOH"; dev->sane.vendor = "RICOH";
str = malloc (sizeof(ibuf.product) + sizeof(ibuf.revision) + 1); str = malloc (sizeof(ibuf.product) + sizeof(ibuf.revision) + 1);
strncpy (str, (char *)ibuf.product, sizeof(ibuf.product)); str[0] = '\0';
strncpy (str + sizeof(ibuf.product), (char *)ibuf.revision, sizeof(ibuf.revision)); strncat (str, (char *)ibuf.product, sizeof(ibuf.product));
str[sizeof(ibuf.product) + sizeof(ibuf.revision)] = '\0'; strncat (str, (char *)ibuf.revision, sizeof(ibuf.revision));
dev->sane.model = str; dev->sane.model = str;
dev->sane.type = "flatbed scanner"; dev->sane.type = "flatbed scanner";