summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Garber <jgarber1@ualberta.ca>2019-08-13 15:18:38 -0600
committerCommit Bot <commit-bot@chromium.org>2019-09-05 10:11:18 +0000
commite4dfaa64ab61bfbc807173f6bc3f95a4aaf25bc9 (patch)
tree75519ca305816c37fb39d4377c651600a20d54af
parent17a9117c324fcb7573e9df24e14161c4a7576c48 (diff)
downloadvboot-e4dfaa64ab61bfbc807173f6bc3f95a4aaf25bc9.tar.gz
tests: Ensure string is null-terminated
It is possible that set_vendor_data will not be null terminated if strlen(vendor_data_value) >= sizeof(set_vendor_data). Leave an extra byte at the end to prevent this. BUG=none TEST=make clean && make runtests BRANCH=none Change-Id: Ic21d74e9f3f36557ab1083001ab8af8ee42426e4 Signed-off-by: Jacob Garber <jgarber1@ualberta.ca> Found-by: Coverity CID 198908 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1752933 Reviewed-by: Joel Kitching <kitching@chromium.org>
-rw-r--r--tests/vboot_api_kernel2_tests.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/tests/vboot_api_kernel2_tests.c b/tests/vboot_api_kernel2_tests.c
index c1f4f04e..43cc399f 100644
--- a/tests/vboot_api_kernel2_tests.c
+++ b/tests/vboot_api_kernel2_tests.c
@@ -62,7 +62,8 @@ static uint32_t mock_num_disks_count;
static int tpm_set_mode_called;
static enum vb2_tpm_mode tpm_mode;
-static char set_vendor_data[32];
+// Extra character to guarantee null termination.
+static char set_vendor_data[VENDOR_DATA_LENGTH + 2];
static int set_vendor_data_called;
/*
@@ -264,7 +265,10 @@ vb2_error_t SetVirtualDevMode(int val)
vb2_error_t VbExSetVendorData(const char *vendor_data_value)
{
set_vendor_data_called = 1;
- strncpy(set_vendor_data, vendor_data_value, sizeof(set_vendor_data));
+ // set_vendor_data is a global variable, so it is automatically
+ // initialized to zero, and so the -1 will ensure the string is null
+ // terminated.
+ strncpy(set_vendor_data, vendor_data_value, sizeof(set_vendor_data) - 1);
return VB2_SUCCESS;
}