diff --git a/libnfc/drivers/acr122_pcsc.c b/libnfc/drivers/acr122_pcsc.c index 6a9151a..f8dc9d2 100644 --- a/libnfc/drivers/acr122_pcsc.c +++ b/libnfc/drivers/acr122_pcsc.c @@ -271,6 +271,7 @@ acr122_pcsc_open(const nfc_context *context, const nfc_connstring connstring) return NULL; } strncpy(fullconnstring, ncs[index], sizeof(nfc_connstring)); + fullconnstring[sizeof(nfc_connstring) - 1] = '\0'; free(ncs); connstring_decode_level = acr122_pcsc_connstring_decode(fullconnstring, &ndd); if (connstring_decode_level < 2) { diff --git a/libnfc/drivers/acr122_usb.c b/libnfc/drivers/acr122_usb.c index db57d76..3608c5b 100644 --- a/libnfc/drivers/acr122_usb.c +++ b/libnfc/drivers/acr122_usb.c @@ -410,6 +410,7 @@ acr122_usb_get_usb_device_name(struct usb_device *dev, usb_dev_handle *udev, cha if ((acr122_usb_supported_devices[n].vendor_id == dev->descriptor.idVendor) && (acr122_usb_supported_devices[n].product_id == dev->descriptor.idProduct)) { strncpy(buffer, acr122_usb_supported_devices[n].name, len); + buffer[len - 1] = '\0'; return true; } } diff --git a/libnfc/drivers/pn53x_usb.c b/libnfc/drivers/pn53x_usb.c index 9f6efc0..1d229c5 100644 --- a/libnfc/drivers/pn53x_usb.c +++ b/libnfc/drivers/pn53x_usb.c @@ -295,6 +295,7 @@ pn53x_usb_get_usb_device_name(struct usb_device *dev, usb_dev_handle *udev, char if ((pn53x_usb_supported_devices[n].vendor_id == dev->descriptor.idVendor) && (pn53x_usb_supported_devices[n].product_id == dev->descriptor.idProduct)) { strncpy(buffer, pn53x_usb_supported_devices[n].name, len); + buffer[len - 1] = '\0'; return true; } } diff --git a/libnfc/nfc.c b/libnfc/nfc.c index fc1ed9f..53f68be 100644 --- a/libnfc/nfc.c +++ b/libnfc/nfc.c @@ -226,6 +226,7 @@ nfc_open(nfc_context *context, const nfc_connstring connstring) } } else { strncpy(ncs, connstring, sizeof(nfc_connstring)); + ncs[sizeof(nfc_connstring) - 1] = '\0'; } // Search through the device list for an available device diff --git a/utils/nfc-relay-picc.c b/utils/nfc-relay-picc.c index 43988e5..18ec0fa 100644 --- a/utils/nfc-relay-picc.c +++ b/utils/nfc-relay-picc.c @@ -130,6 +130,7 @@ static int scan_hex_fd3(uint8_t *pbtData, size_t *pszBytes, const char *pchPrefi } } strncpy(pchScan, pchPrefix, 250); + pchScan[sizeof(pchScan) - 1] = '\0'; strcat(pchScan, " %04x:"); if (fscanf(fd3, pchScan, &uiBytes) < 1) { return -1;