@@ -94,6 +94,24 @@ TEST(test_string_variable)
9494 ASSERT (strcmp (out , "hello boot" ) == 0 );
9595}
9696
97+ TEST (test_reject_invalid_variable_names )
98+ {
99+ uint32_t value = 42 ;
100+ char long_name [EOS_RTSVC_MAX_VAR_NAME + 1 ];
101+ memset (long_name , 'a' , sizeof (long_name ));
102+ long_name [sizeof (long_name ) - 1 ] = '\0' ;
103+
104+ ASSERT (eos_rtsvc_set_variable ("" , & value , sizeof (value )) == EOS_ERR_INVALID );
105+ ASSERT (eos_rtsvc_set_variable (long_name , & value , sizeof (value )) == EOS_ERR_INVALID );
106+
107+ /* Invalid names must not consume slots in the fixed-size variable store. */
108+ for (int i = 0 ; i < EOS_RTSVC_MAX_VARS ; i ++ ) {
109+ char name [EOS_RTSVC_MAX_VAR_NAME ];
110+ snprintf (name , sizeof (name ), "valid-%d" , i );
111+ ASSERT (eos_rtsvc_set_variable (name , & value , sizeof (value )) == EOS_OK );
112+ }
113+ }
114+
97115TEST (test_next_boot_slot )
98116{
99117 ASSERT (eos_rtsvc_get_next_boot () == EOS_SLOT_NONE );
@@ -118,10 +136,11 @@ int main(void)
118136 run_test_get_nonexistent ();
119137 run_test_null_args ();
120138 run_test_string_variable ();
139+ run_test_reject_invalid_variable_names ();
121140 run_test_next_boot_slot ();
122141 run_test_time ();
123142
124- tests_run = 8 ;
143+ tests_run = 9 ;
125144 printf ("\n%d/%d tests passed\n" , tests_passed , tests_run );
126145 return (tests_passed == tests_run ) ? 0 : 1 ;
127146}
0 commit comments