diff options
| -rw-r--r-- | include/test.mk | 2 | ||||
| -rw-r--r-- | sbat_var.S | 6 | ||||
| -rw-r--r-- | test-sbat.c | 32 |
3 files changed, 37 insertions, 3 deletions
diff --git a/include/test.mk b/include/test.mk index c0e24095..c37b8446 100644 --- a/include/test.mk +++ b/include/test.mk @@ -92,7 +92,7 @@ test-mock-variables: CFLAGS+=-DHAVE_SHIM_LOCK_GUID test-mok-mirror_FILES = mok.c globals.c tpm.c lib/guid.c lib/variables.c mock-variables.c test-mok-mirror: CFLAGS+=-DHAVE_START_IMAGE -DHAVE_SHIM_LOCK_GUID -test-sbat_FILES = csv.c lib/variables.c lib/guid.c sbat_var.S +test-sbat_FILES = csv.c lib/variables.c lib/guid.c sbat_var.S mock-variables.c test-sbat :: CFLAGS+=-DHAVE_GET_VARIABLE -DHAVE_GET_VARIABLE_ATTR -DHAVE_SHIM_LOCK_GUID test-str_FILES = lib/string.c @@ -14,7 +14,9 @@ sbat_var_payload_header: .Lsbat_var_payload_header_end: .balign 1, 0 .Lsbat_var_previous: - .asciz SBAT_VAR_PREVIOUS + .ascii SBAT_VAR_PREVIOUS + .byte 0 .balign 1, 0 .Lsbat_var_latest: - .asciz SBAT_VAR_LATEST + .ascii SBAT_VAR_LATEST + .byte 0 diff --git a/test-sbat.c b/test-sbat.c index 72bebe7a..65bc6a84 100644 --- a/test-sbat.c +++ b/test-sbat.c @@ -1107,6 +1107,36 @@ test_preserve_sbat_uefi_variable_bad_short(void) return 0; } +static int +test_sbat_var_asciz(void) +{ + EFI_STATUS status; + char buf[1024] = ""; + UINT32 attrs = 0; + UINTN size = sizeof(buf); + char expected[] = SBAT_VAR_PREVIOUS; + + status = set_sbat_uefi_variable(); + if (status != EFI_SUCCESS) + return -1; + + status = RT->GetVariable(SBAT_VAR_NAME, &SHIM_LOCK_GUID, &attrs, &size, buf); + if (status != EFI_SUCCESS) + return -1; + + /* + * this should be enough to get past "sbat,", which handles the + * first error. + */ + if (size < (strlen(SBAT_VAR_SIG) + 2) || size != strlen(expected)) + return -1; + + if (strncmp(expected, buf, size) != 0) + return -1; + + return 0; +} + int main(void) { @@ -1155,6 +1185,8 @@ main(void) test(test_preserve_sbat_uefi_variable_version_older); test(test_preserve_sbat_uefi_variable_version_olderlonger); + test(test_sbat_var_asciz); + return 0; } |
