summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaketh Pothireddy <spothire@google.com>2023-04-24 18:43:48 +0000
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-04-27 18:29:31 +0000
commit8ef4f7a9a9a68bad49e8417d5ed346dc927e1d2c (patch)
treedd1283cd124a670b7c3e905aa8adfd811016bd6b
parentf5dcda11682c6f3ad267b73673946d425bb70fd9 (diff)
downloadvboot-stabilize-15446.B.tar.gz
vboot: update get system propertiesstabilize-15446.B
`VbGetSystemPropertyString` header promises that the property string will be read into the passed in dest buffer, however for some system properties the values are not placed in buffer but returned directly. this patch fixes that error Before, running `VbGetSystemPropertyString("minios_priority", buf, size):` ``` buf: return value: B ``` After, same command: ``` buf: B return value: B ``` BRANCH=none BUG=none TEST=Tested with an executable on brya Signed-off-by: Saketh Pothireddy <spothire@chromium.org> Change-Id: I87a0aa8638e719bc5bbea579ecaca4754a38c02e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/4468208 Reviewed-by: Jae Hoon Kim <kimjae@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Saketh Pothireddy <spothire@google.com> Tested-by: Saketh Pothireddy <spothire@google.com>
-rw-r--r--host/lib/crossystem.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/host/lib/crossystem.c b/host/lib/crossystem.c
index a7b04b99..24449b91 100644
--- a/host/lib/crossystem.c
+++ b/host/lib/crossystem.c
@@ -536,9 +536,9 @@ const char *VbGetSystemPropertyString(const char *name, char *dest, size_t size)
if (!strcasecmp(name,"kernkey_vfy")) {
switch(GetVdatInt(VDAT_INT_KERNEL_KEY_VERIFIED)) {
case 0:
- return "hash";
+ return StrCopy(dest, "hash", size);
case 1:
- return "sig";
+ return StrCopy(dest, "sig", size);
default:
return NULL;
}
@@ -548,31 +548,35 @@ const char *VbGetSystemPropertyString(const char *name, char *dest, size_t size)
return GetVdatString(dest, size,
VDAT_STRING_LOAD_FIRMWARE_DEBUG);
} else if (!strcasecmp(name, "fw_try_next")) {
- return vb2_get_nv_storage(VB2_NV_TRY_NEXT) ? "B" : "A";
+ return StrCopy(dest, vb2_get_nv_storage(VB2_NV_TRY_NEXT) ?
+ "B" : "A", size);
} else if (!strcasecmp(name, "fw_tried")) {
- return vb2_get_nv_storage(VB2_NV_FW_TRIED) ? "B" : "A";
+ return StrCopy(dest, vb2_get_nv_storage(VB2_NV_FW_TRIED) ?
+ "B" : "A", size);
} else if (!strcasecmp(name, "fw_result")) {
int v = vb2_get_nv_storage(VB2_NV_FW_RESULT);
if (v < ARRAY_SIZE(fw_results))
- return fw_results[v];
+ return StrCopy(dest, fw_results[v], size);
else
- return "unknown";
+ return StrCopy(dest, "unknown", size);
} else if (!strcasecmp(name, "fw_prev_tried")) {
- return vb2_get_nv_storage(VB2_NV_FW_PREV_TRIED) ? "B" : "A";
+ return StrCopy(dest, vb2_get_nv_storage(VB2_NV_FW_PREV_TRIED) ?
+ "B" : "A", size);
} else if (!strcasecmp(name, "fw_prev_result")) {
int v = vb2_get_nv_storage(VB2_NV_FW_PREV_RESULT);
if (v < ARRAY_SIZE(fw_results))
- return fw_results[v];
+ return StrCopy(dest, fw_results[v], size);
else
- return "unknown";
+ return StrCopy(dest, "unknown", size);
} else if (!strcasecmp(name,"dev_default_boot")) {
int v = vb2_get_nv_storage(VB2_NV_DEV_DEFAULT_BOOT);
if (v < ARRAY_SIZE(default_boot))
- return default_boot[v];
+ return StrCopy(dest, default_boot[v], size);
else
- return "unknown";
+ return StrCopy(dest, "unknown", size);
} else if (!strcasecmp(name, "minios_priority")) {
- return vb2_get_nv_storage(VB2_NV_MINIOS_PRIORITY) ? "B" : "A";
+ return StrCopy(dest, vb2_get_nv_storage(VB2_NV_MINIOS_PRIORITY)
+ ? "B" : "A", size);
}
return NULL;