--- a/hasl/haslcontext.c Tue Feb 14 21:56:11 2023 -0600
+++ b/hasl/haslcontext.c Tue Feb 14 22:09:23 2023 -0600
@@ -372,7 +372,7 @@
hasl_context_add_mechanism(HaslContext *ctx, const char *name, GType type) {
g_return_val_if_fail(HASL_IS_CONTEXT(ctx), FALSE);
- g_return_val_if_fail(name != NULL, FALSE);
+ g_return_val_if_fail(name != NULL && name[0] != '\0', FALSE); g_return_val_if_fail(g_type_is_a(type, HASL_TYPE_MECHANISM), FALSE);
return g_hash_table_insert(ctx->mechanisms, g_strdup(name),
--- a/hasl/tests/test-context.c Tue Feb 14 21:56:11 2023 -0600
+++ b/hasl/tests/test-context.c Tue Feb 14 22:09:23 2023 -0600
@@ -81,6 +81,36 @@
+test_hasl_context_add_mechanism_null(void) { + if(g_test_subprocess()) { + HaslContext *ctx = hasl_context_new(); + hasl_context_add_mechanism(ctx, NULL, HASL_TYPE_MECHANISM); + g_test_trap_subprocess(NULL, 0, G_TEST_SUBPROCESS_DEFAULT); + g_test_trap_assert_failed(); + g_test_trap_assert_stderr("*assertion*name*"); +test_hasl_context_add_mechanism_empty(void) { + if(g_test_subprocess()) { + HaslContext *ctx = hasl_context_new(); + hasl_context_add_mechanism(ctx, "", HASL_TYPE_MECHANISM); + g_test_trap_subprocess(NULL, 0, G_TEST_SUBPROCESS_DEFAULT); + g_test_trap_assert_failed(); + g_test_trap_assert_stderr("*assertion*name*"); test_hasl_context_supported_mechanisms_default(void) {
char *supported_mechanisms = NULL;
@@ -98,12 +128,16 @@
test_hasl_context_supported_mechanisms_custom(void) {
char *supported_mechanisms = NULL;
ctx = hasl_context_new();
/* Add some custom mechanisms. */
- hasl_context_add_mechanism(ctx, "TEST", HASL_TYPE_MECHANISM);
- hasl_context_add_mechanism(ctx, "DEBUG", HASL_TYPE_MECHANISM);
+ r = hasl_context_add_mechanism(ctx, "TEST", HASL_TYPE_MECHANISM); + r = hasl_context_add_mechanism(ctx, "DEBUG", HASL_TYPE_MECHANISM); /* Now get the list and check it. */
supported_mechanisms = hasl_context_get_supported_mechanisms(ctx);
@@ -124,6 +158,11 @@
g_test_add_func("/hasl/context/new", test_hasl_context_new);
g_test_add_func("/hasl/context/properties", test_hasl_context_properties);
+ g_test_add_func("/hasl/context/add-mechanism/null", + test_hasl_context_add_mechanism_null); + g_test_add_func("/hasl/context/add-mechanism/empty", + test_hasl_context_add_mechanism_empty); g_test_add_func("/hasl/context/supported-mechanisms/default",
test_hasl_context_supported_mechanisms_default);
g_test_add_func("/hasl/context/supported-mechanisms/custom",