diff options
author | Saketh Pothireddy <spothire@google.com> | 2023-04-24 18:43:48 +0000 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-04-27 18:29:31 +0000 |
commit | 8ef4f7a9a9a68bad49e8417d5ed346dc927e1d2c (patch) | |
tree | dd1283cd124a670b7c3e905aa8adfd811016bd6b | |
parent | f5dcda11682c6f3ad267b73673946d425bb70fd9 (diff) | |
download | vboot-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.c | 28 |
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; |