From 31f8a2fe74e4d622bbd1dbf5a603f739ccf71eb7 Mon Sep 17 00:00:00 2001 From: Stephen Barber Date: Fri, 19 Jun 2015 12:56:34 -0700 Subject: chromeos: vpd: properly null terminate values VPD strings are not null terminated, so we can't use strcpy on them in cros_vpd_gets. BUG=none BRANCH=none TEST=add serial_number followed by cam_calib_data to VPD on smaug; make sure that smaug boots and serial number matches exactly (no garbage) Change-Id: Id72885517b3d0b1934ba329c1ef0d89a67bd2bb4 Signed-off-by: Patrick Georgi Original-Commit-Id: 56bbe6688b11043360a046a250d1ea93db4d9f0e Original-Change-Id: I811dfc2f0830a91410eb69961a6565080ff78267 Original-Signed-off-by: Stephen Barber Original-Reviewed-on: https://chromium-review.googlesource.com/280836 Original-Reviewed-by: David Hendricks Original-Reviewed-by: Benson Leung Reviewed-on: http://review.coreboot.org/10627 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh Reviewed-by: Paul Menzel --- src/vendorcode/google/chromeos/cros_vpd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vendorcode/google/chromeos/cros_vpd.c b/src/vendorcode/google/chromeos/cros_vpd.c index fed1d82344..f9aec88f36 100644 --- a/src/vendorcode/google/chromeos/cros_vpd.c +++ b/src/vendorcode/google/chromeos/cros_vpd.c @@ -132,7 +132,8 @@ char *cros_vpd_gets(const char *key, char *buffer, int size) return NULL; if (size > (string_size + 1)) { - strcpy(buffer, string_address); + memcpy(buffer, string_address, string_size); + buffer[string_size] = '\0'; } else { memcpy(buffer, string_address, size - 1); buffer[size - 1] = '\0'; -- cgit v1.2.3