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
(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.