From 4022735d7b9d2938ddb9f4f6e3cc4db016ae13b1 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Mon, 21 Sep 2026 14:17:42 +0200 Subject: [PATCH] Make test_comstack pass when executed in a container --- test/test_comstack.c | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/test/test_comstack.c b/test/test_comstack.c index 60a4ccce..2da499e8 100644 --- a/test/test_comstack.c +++ b/test/test_comstack.c @@ -475,7 +475,7 @@ static void tst_cs_get_host_args(void) YAZ_CHECK(arg && !strcmp(arg, "x")); } -static void tst_cs_get_error(void) +static void tst_cs_get_error_tcp(void) { COMSTACK cs = cs_create(tcpip_type, CS_FLAGS_BLOCKING, PROTO_Z3950); const char *details = "not set"; @@ -486,30 +486,28 @@ static void tst_cs_get_error(void) YAZ_CHECK_EQ(cs_get_error(cs, &details), CSNONE); YAZ_CHECK(!details); + cs_close(cs); +} +static void tst_cs_get_error_ssl(void) +{ #if HAVE_GNUTLS_H - { - COMSTACK ssl_cs = - cs_create(ssl_type, CS_FLAGS_BLOCKING, PROTO_Z3950); + const char *details = NULL; + COMSTACK ssl_cs = + cs_create(ssl_type, CS_FLAGS_BLOCKING, PROTO_Z3950); - YAZ_CHECK(ssl_cs); - if (ssl_cs) - { - void *ad = cs_straddr(ssl_cs, "localhost:0"); - YAZ_CHECK(ad); - YAZ_CHECK(cs_set_ssl_certificate_file(ssl_cs, "")); - if (ad) - { - YAZ_CHECK_EQ(cs_bind(ssl_cs, ad, CS_SERVER), -1); - YAZ_CHECK_EQ(cs_get_error(ssl_cs, &details), CSERRORSSL); - YAZ_CHECK(details && *details); - } - cs_close(ssl_cs); - } - } + YAZ_CHECK(ssl_cs); + if (!ssl_cs) + return; + /* Certificate loading fails before tcpip_bind uses the address + or socket. Avoid cs_straddr here: it creates a socket, which + may be prohibited in a container or test sandbox. */ + YAZ_CHECK(cs_set_ssl_certificate_file(ssl_cs, "")); + YAZ_CHECK_EQ(cs_bind(ssl_cs, 0, CS_SERVER), -1); + YAZ_CHECK_EQ(cs_get_error(ssl_cs, &details), CSERRORSSL); + YAZ_CHECK(details && *details); + cs_close(ssl_cs); #endif - - cs_close(cs); } int main (int argc, char **argv) @@ -521,7 +519,8 @@ int main (int argc, char **argv) tst_http_request(); tst_http_response(); tst_cs_get_host_args(); - tst_cs_get_error(); + tst_cs_get_error_tcp(); + tst_cs_get_error_ssl(); YAZ_CHECK_TERM; }