Work around the absence of a spare slot when there is only
one configuration slot

Signed-off-by: Earl Chew <[email protected]>
---
 tools/tests/test_ebgenv_api.c          | 23 +++++++++++++++--------
 tools/tests/test_ebgenv_api_internal.c |  2 +-
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/tools/tests/test_ebgenv_api.c b/tools/tests/test_ebgenv_api.c
index 8efa9d3..a248989 100644
--- a/tools/tests/test_ebgenv_api.c
+++ b/tools/tests/test_ebgenv_api.c
@@ -91,6 +91,7 @@ START_TEST(ebgenv_api_ebg_env_create_new)
        char buffer[10];
        char *kernelfile = "kernel123";
        char *kernelparams = "param456";
+       int watchdogtimeout = 44;
 
        memset(&e, 0, sizeof(e));
        memset(envdata, 0, sizeof(envdata));
@@ -110,13 +111,19 @@ START_TEST(ebgenv_api_ebg_env_create_new)
         * environment is created. The new environment must overwrite the
         * oldest environment and revision and ustate must be set correctly.
         */
-       envdata[ENV_NUM_CONFIG_PARTS-1].watchdog_timeout_sec = 44;
-       (void)str8to16(bufferw, kernelfile);
-       memcpy(envdata[ENV_NUM_CONFIG_PARTS-1].kernelfile, bufferw,
-              strlen(kernelfile) * 2 + 2);
-       (void)str8to16(bufferw, kernelparams);
-       memcpy(envdata[ENV_NUM_CONFIG_PARTS-1].kernelparams, bufferw,
-              strlen(kernelparams) * 2 + 2);
+       if (ENV_NUM_CONFIG_PARTS > 1) {
+               envdata[ENV_NUM_CONFIG_PARTS-1].watchdog_timeout_sec = 
watchdogtimeout;
+               (void)str8to16(bufferw, kernelfile);
+               memcpy(envdata[ENV_NUM_CONFIG_PARTS-1].kernelfile, bufferw,
+                      strlen(kernelfile) * 2 + 2);
+               (void)str8to16(bufferw, kernelparams);
+               memcpy(envdata[ENV_NUM_CONFIG_PARTS-1].kernelparams, bufferw,
+                      strlen(kernelparams) * 2 + 2);
+       } else {
+               kernelfile = "";
+               kernelparams = "";
+               watchdogtimeout = 0;
+       }
        errno = 0;
 
        bgenv_init_fake.return_val = true;
@@ -132,7 +139,7 @@ START_TEST(ebgenv_api_ebg_env_create_new)
                ((BGENV *)e.bgenv)->data->revision, ENV_NUM_CONFIG_PARTS+1);
 
        ck_assert_int_eq(((BGENV *)e.bgenv)->data->ustate, USTATE_OK);
-       ck_assert_int_eq(((BGENV *)e.bgenv)->data->watchdog_timeout_sec, 44);
+       ck_assert_int_eq(((BGENV *)e.bgenv)->data->watchdog_timeout_sec, 
watchdogtimeout);
        (void)str16to8(buffer, ((BGENV *)e.bgenv)->data->kernelfile);
        ck_assert_int_eq(strcmp(buffer, kernelfile), 0);
        (void)str16to8(buffer, ((BGENV *)e.bgenv)->data->kernelparams);
diff --git a/tools/tests/test_ebgenv_api_internal.c 
b/tools/tests/test_ebgenv_api_internal.c
index 1ed1d99..6a3d816 100644
--- a/tools/tests/test_ebgenv_api_internal.c
+++ b/tools/tests/test_ebgenv_api_internal.c
@@ -248,7 +248,7 @@ START_TEST(ebgenv_api_internal_bgenv_create_new)
        ck_assert(handle != NULL);
        ck_assert(handle->data == &envdata[max-1]);
        ck_assert(envdata[max-1].revision == max+1);
-       ck_assert(envdata[max-1].watchdog_timeout_sec == 30);
+       ck_assert(envdata[max-1].watchdog_timeout_sec == (max == 1 ? 0 : 30));
 
        free(handle);
 }
-- 
2.39.1

-- 
You received this message because you are subscribed to the Google Groups "EFI 
Boot Guard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/efibootguard-dev/20230715154353.17746-1-earl_chew%40yahoo.com.

Reply via email to