diff options
author | Edward O'Callaghan <quasisec@chromium.org> | 2023-05-08 01:54:37 +0000 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-05-08 07:09:21 +0000 |
commit | f029229daac8a4571be184641cb135ff9c59b6b0 (patch) | |
tree | 4c962ec5013f16c83dbb79241002f86d517b7efa | |
parent | ff86b93483c7d7b5b6991177068232f94b32e0de (diff) | |
download | vboot-f029229daac8a4571be184641cb135ff9c59b6b0.tar.gz |
Revert "vboot: update get system properties"
This reverts commit 8ef4f7a9a9a68bad49e8417d5ed346dc927e1d2c.
Reason for revert: Installer supposedly misuses API with
`VbGetSystemPropertyString("fw_try_next", NULL, 0);`
by passing a `NULL` ptr as dest and so not sized.
The call sites need checking.
BUG=b:280417931
TEST=none
Original change's description:
> vboot: update get system properties
>
> `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>
Bug: none
Change-Id: Ie07363424db92832b485c9efae21edbf0d24fba5
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/4508974
Commit-Queue: Edward O'Callaghan <quasisec@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Edward O'Callaghan <quasisec@chromium.org>
-rw-r--r-- | host/lib/crossystem.c | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/host/lib/crossystem.c b/host/lib/crossystem.c index 24449b91..a7b04b99 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 StrCopy(dest, "hash", size); + return "hash"; case 1: - return StrCopy(dest, "sig", size); + return "sig"; default: return NULL; } @@ -548,35 +548,31 @@ 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 StrCopy(dest, vb2_get_nv_storage(VB2_NV_TRY_NEXT) ? - "B" : "A", size); + return vb2_get_nv_storage(VB2_NV_TRY_NEXT) ? "B" : "A"; } else if (!strcasecmp(name, "fw_tried")) { - return StrCopy(dest, vb2_get_nv_storage(VB2_NV_FW_TRIED) ? - "B" : "A", size); + return vb2_get_nv_storage(VB2_NV_FW_TRIED) ? "B" : "A"; } else if (!strcasecmp(name, "fw_result")) { int v = vb2_get_nv_storage(VB2_NV_FW_RESULT); if (v < ARRAY_SIZE(fw_results)) - return StrCopy(dest, fw_results[v], size); + return fw_results[v]; else - return StrCopy(dest, "unknown", size); + return "unknown"; } else if (!strcasecmp(name, "fw_prev_tried")) { - return StrCopy(dest, vb2_get_nv_storage(VB2_NV_FW_PREV_TRIED) ? - "B" : "A", size); + return vb2_get_nv_storage(VB2_NV_FW_PREV_TRIED) ? "B" : "A"; } 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 StrCopy(dest, fw_results[v], size); + return fw_results[v]; else - return StrCopy(dest, "unknown", size); + return "unknown"; } 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 StrCopy(dest, default_boot[v], size); + return default_boot[v]; else - return StrCopy(dest, "unknown", size); + return "unknown"; } else if (!strcasecmp(name, "minios_priority")) { - return StrCopy(dest, vb2_get_nv_storage(VB2_NV_MINIOS_PRIORITY) - ? "B" : "A", size); + return vb2_get_nv_storage(VB2_NV_MINIOS_PRIORITY) ? "B" : "A"; } return NULL; |