NetBSD Problem Report #59071

From woods@mail.weird.com  Wed Feb 12 03:52:15 2025
Return-Path: <woods@mail.weird.com>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256
	 client-signature RSA-PSS (2048 bits) client-digest SHA256)
	(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
	by mollari.NetBSD.org (Postfix) with ESMTPS id 128AC1A923A
	for <gnats-bugs@gnats.NetBSD.org>; Wed, 12 Feb 2025 03:52:15 +0000 (UTC)
Message-Id: <m1ti0KU-00N59mC@more.local>
Date: Tue, 11 Feb 2025 16:10:14 -0800 (PST)
From: "Greg A. Woods" <woods@planix.ca>
Sender: "Greg A. Woods" <woods@mail.weird.com>
Reply-To: "Greg A. Woods" <woods@planix.ca>
To: gnats-bugs@NetBSD.org
Subject: libsaslc leaks private symbols
X-Send-Pr-Version: 3.95

>Number:         59071
>Category:       lib
>Synopsis:       libsaslc leaks private symbols
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    lib-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Feb 12 03:55:00 +0000 2025
>Originator:     Greg A. Woods
>Release:        NetBSD current et all
>Organization:
Planix, Inc.; Kelowna, BC; Canada
>Environment:
>Description:
	libsaslc leaks private symbols
>How-To-Repeat:
	build with MKKERBEROS=no, observe saslc__mech_gssapi is missing
	from the expected symbols
>Fix:
	use -fvisibility=hidden, declare public symbols, update expected
	symbols list, (bump major?)

diff --git a/crypto/external/bsd/libsaslc/dist/include/saslc.h b/crypto/external/bsd/libsaslc/dist/include/saslc.h
index dea4de9cec19..f0992e5d9d39 100644
--- a/crypto/external/bsd/libsaslc/dist/include/saslc.h
+++ b/crypto/external/bsd/libsaslc/dist/include/saslc.h
@@ -64,27 +64,40 @@ typedef struct saslc_t saslc_t;
 typedef struct saslc_sess_t saslc_sess_t;

 /* begin and end */
+__attribute__((visibility("default")))
 saslc_t *saslc_alloc(void);
+__attribute__((visibility("default")))
 int saslc_init(saslc_t *, const char *, const char *);
+__attribute__((visibility("default")))
 int saslc_end(saslc_t *);

 /* error */
+__attribute__((visibility("default")))
 const char *saslc_strerror(saslc_t *);
+__attribute__((visibility("default")))
 const char *saslc_sess_strerror(saslc_sess_t *);

 /* session begin and end */
+__attribute__((visibility("default")))
 saslc_sess_t *saslc_sess_init(saslc_t *, const char *, const char *);
+__attribute__((visibility("default")))
 void saslc_sess_end(saslc_sess_t *);

 /* session properties */
+__attribute__((visibility("default")))
 int saslc_sess_setprop(saslc_sess_t *, const char *, const char *);
+__attribute__((visibility("default")))
 const char *saslc_sess_getprop(saslc_sess_t *, const char *);
+__attribute__((visibility("default")))
 const char *saslc_sess_getmech(saslc_sess_t *);

 /* session management */
+__attribute__((visibility("default")))
 int saslc_sess_cont(saslc_sess_t *, const void *, size_t, void **, size_t *);
+__attribute__((visibility("default")))
 ssize_t saslc_sess_encode(saslc_sess_t *, const void *, size_t, void **,
     size_t *);
+__attribute__((visibility("default")))
 ssize_t saslc_sess_decode(saslc_sess_t *, const void *, size_t, void **,
     size_t *);

diff --git a/crypto/external/bsd/libsaslc/lib/Makefile b/crypto/external/bsd/libsaslc/lib/Makefile
index 2b6233e9984e..af0dfab4e84a 100644
--- a/crypto/external/bsd/libsaslc/lib/Makefile
+++ b/crypto/external/bsd/libsaslc/lib/Makefile
@@ -28,6 +28,8 @@ SRCS+= xsess.c

 COPTS.msg.c = -Wno-format-nonliteral

+COPTS+= -fvisibility=hidden
+
 CPPFLAGS+=-I${EXTDIST}/include
 WARNS?=4

diff --git a/crypto/external/bsd/libsaslc/lib/saslc.expsym b/crypto/external/bsd/libsaslc/lib/saslc.expsym
index c953f30f0984..b110ca65c255 100644
--- a/crypto/external/bsd/libsaslc/lib/saslc.expsym
+++ b/crypto/external/bsd/libsaslc/lib/saslc.expsym
@@ -1,48 +1,4 @@
-saslc__buffer32_create
-saslc__buffer32_destroy
-saslc__buffer32_fetch
-saslc__buffer_create
-saslc__buffer_destroy
-saslc__buffer_fetch
-saslc__crypto_decode_base64
-saslc__crypto_encode_base64
-saslc__crypto_hash_to_hex
-saslc__crypto_hmac_md5_hash
-saslc__crypto_hmac_md5_hex
-saslc__crypto_md5_hash
-saslc__crypto_md5_hex
-saslc__crypto_nonce
-saslc__dict_create
-saslc__dict_destroy
-saslc__dict_get
-saslc__dict_get_len
-saslc__dict_insert
-saslc__dict_remove
-saslc__error_get_strerror
-saslc__list_append
-saslc__list_flags
-saslc__list_free
-saslc__list_log
-saslc__list_parse
-saslc__mech_anonymous
-saslc__mech_crammd5
-saslc__mech_digestmd5
-saslc__mech_external
-saslc__mech_generic_create
-saslc__mech_generic_destroy
-saslc__mech_gssapi
-saslc__mech_list_create
-saslc__mech_list_destroy
-saslc__mech_list_get
-saslc__mech_login
-saslc__mech_plain
-saslc__mech_qop_tbl
-saslc__mech_strdup
-saslc__msg_syslog
-saslc__parser_config
-saslc__parser_is_true
 saslc_alloc
-saslc_debug
 saslc_end
 saslc_init
 saslc_sess_cont

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.47 2022/09/11 19:34:41 kim Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2025 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.