File 0002-Fix-build-with-glibc-2.43.patch of Package adcli
From ab07617e887d572e168300248ca14afa7ae92460 Mon Sep 17 00:00:00 2001
From: Samuel Cabrero <scabrero@suse.com>
Date: Tue, 24 Feb 2026 10:56:51 +0100
Subject: [PATCH] Fix build with glibc 2.43
From glibc 2.43 release notes:
* For ISO C23, the functions bsearch, memchr, strchr, strpbrk, strrchr,
strstr, wcschr, wcspbrk, wcsrchr, wcsstr and wmemchr that return
pointers into their input arrays now have definitions as macros that
return a pointer to a const-qualified type when the input argument is
a pointer to a const-qualified type.
Signed-off-by: Samuel Cabrero <scabrero@suse.com>
---
library/adenroll.c | 8 ++++----
library/adentry.c | 2 +-
library/adprivate.h | 5 +++++
library/adutil.c | 18 ++++++++++++++++++
4 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/library/adenroll.c b/library/adenroll.c
index 9484cbf..ba1a20f 100644
--- a/library/adenroll.c
+++ b/library/adenroll.c
@@ -3958,7 +3958,8 @@ static int comp_attr_name (const char *s1, const char *s2)
adcli_result
adcli_enroll_add_setattr (adcli_enroll *enroll, const char *value)
{
- char *delim;
+ const char *delim = NULL;
+ size_t n = 0;
return_val_if_fail (enroll != NULL, ADCLI_ERR_CONFIG);
return_val_if_fail (value != NULL, ADCLI_ERR_CONFIG);
@@ -3974,12 +3975,11 @@ adcli_enroll_add_setattr (adcli_enroll *enroll, const char *value)
return ADCLI_ERR_CONFIG;
}
- *delim = '\0';
- if (_adcli_strv_has_ex (default_ad_ldap_attrs, value, strcasecmp) == 1) {
+ n = delim - value;
+ if (_adcli_strv_has_exn (default_ad_ldap_attrs, value, n, strncasecmp) == 1) {
_adcli_err ("Attribute [%s] cannot be set with setattr", value);
return ADCLI_ERR_CONFIG;
}
- *delim = '=';
if (_adcli_strv_has_ex (enroll->setattr, value, comp_attr_name) == 1) {
_adcli_err ("Attribute [%s] already set", value);
diff --git a/library/adentry.c b/library/adentry.c
index 8de4454..29ce19b 100644
--- a/library/adentry.c
+++ b/library/adentry.c
@@ -605,7 +605,7 @@ user_entry_builder (adcli_entry *entry,
static bool check_name (const char *name, const char *illegal_characters)
{
- char *c;
+ const char *c;
if ( (c = strpbrk (name, illegal_characters)) == NULL) {
return true;
diff --git a/library/adprivate.h b/library/adprivate.h
index 71ac9e4..c138664 100644
--- a/library/adprivate.h
+++ b/library/adprivate.h
@@ -138,6 +138,11 @@ int _adcli_strv_has_ex (char **strv,
const char *str,
int (* compare) (const char *match, const char*value));
+int _adcli_strv_has_exn (char **strv,
+ const char *str,
+ size_t n,
+ int (* comparen) (const char *match, const char *value, size_t n));
+
char ** _adcli_strv_dup (char **strv) GNUC_WARN_UNUSED;
char * _adcli_strv_join (char **strv,
diff --git a/library/adutil.c b/library/adutil.c
index d4a4f4b..6388ead 100644
--- a/library/adutil.c
+++ b/library/adutil.c
@@ -238,6 +238,24 @@ _adcli_strv_has_ex (char **strv,
return 0;
}
+int
+_adcli_strv_has_exn (char **strv,
+ const char *str,
+ size_t n,
+ int (* comparen) (const char *match, const char *value, size_t n))
+{
+ int i;
+
+ for (i = 0; strv && strv[i] != NULL; i++) {
+ if (strlen(strv[i]) == n &&
+ comparen (strv[i], str, n) == 0) {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
char **
_adcli_strv_add_unique (char **strv,
char *string,
--
2.53.0