summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorViswanath Kraleti <viswanath.kraleti@oss.qualcomm.com>2026-03-14 11:11:42 +0530
committerKhem Raj <raj.khem@gmail.com>2026-03-18 14:33:23 -0700
commitafbc56ae3c8592c53dbd3932657c5fc625d37614 (patch)
tree336a2dce86dca5264b226016927ae231931c1488
parent65b7f7330ee5e4f819fc3c0e7fbc56573f10332c (diff)
downloadmeta-openembedded-afbc56ae3c8592c53dbd3932657c5fc625d37614.tar.gz
krb5: backport additional fixes to build with glibc 2.43
Building krb5 with glibc 2.43 fails due to ISO C23 changes to strchr() and related search functions. Backport the upstream fix that updates code to use correct pointer types and adjusts function signatures accordingly. Signed-off-by: Viswanath Kraleti <viswanath.kraleti@oss.qualcomm.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--meta-oe/recipes-connectivity/krb5/krb5/fix-strchr-conformance-to-C23.patch191
-rw-r--r--meta-oe/recipes-connectivity/krb5/krb5_1.22.2.bb1
2 files changed, 192 insertions, 0 deletions
diff --git a/meta-oe/recipes-connectivity/krb5/krb5/fix-strchr-conformance-to-C23.patch b/meta-oe/recipes-connectivity/krb5/krb5/fix-strchr-conformance-to-C23.patch
new file mode 100644
index 0000000000..0cc50d2fdb
--- /dev/null
+++ b/meta-oe/recipes-connectivity/krb5/krb5/fix-strchr-conformance-to-C23.patch
@@ -0,0 +1,191 @@
1From cf3fcbb7ad5f3ffd78eb7dd4ecbc96c98ad15208 Mon Sep 17 00:00:00 2001
2From: Alexander Bokovoy <abokovoy@redhat.com>
3Date: Wed, 10 Dec 2025 10:42:02 +0200
4Subject: [PATCH] Fix strchr() conformance to C23
5
6C23 7.28.5.1 specifies search functions such as strchr() as generic,
7returning const char * if the first argument is of type const char *.
8Fix uses of strchr() to conform to this change.
9
10[jrische@redhat.com: altered changes to avoid casts; fixed an
11additional case]
12[ghudson@mit.edu: condensed some declarations; rewrote commit message]
13
14ticket: 9191 (new)
15
16Signed-off-by: Viswanath Kraleti <viswanath.kraleti@oss.qualcomm.com>
17Upstream-Status: Backport [https://github.com/krb5/krb5/commit/ad4dcf1856dadc4b352b5c8ff08e51c7290fb41f]
18---
19 src/lib/krb5/ccache/ccbase.c | 4 ++--
20 src/lib/krb5/os/expand_path.c | 3 ++-
21 src/lib/krb5/os/locate_kdc.c | 15 +++++++--------
22 src/plugins/preauth/pkinit/pkinit_crypto.h | 2 +-
23 src/preauth/pkinit/pkinit_crypto_openssl.c | 6 +++---
24 src/plugins/preauth/pkinit/pkinit_identity.c | 2 +-
25 src/plugins/preauth/pkinit/pkinit_matching.c | 2 +-
26 src/tests/responder.c | 3 +--
27 8 files changed, 18 insertions(+), 19 deletions(-)
28
29diff --git a/src/lib/krb5/ccache/ccbase.c b/src/lib/krb5/ccache/ccbase.c
30index 696b681..30a0a41 100644
31--- a/src/lib/krb5/ccache/ccbase.c
32+++ b/src/lib/krb5/ccache/ccbase.c
33@@ -201,8 +201,8 @@ krb5_cc_register(krb5_context context, const krb5_cc_ops *ops,
34 krb5_error_code KRB5_CALLCONV
35 krb5_cc_resolve (krb5_context context, const char *name, krb5_ccache *cache)
36 {
37- char *pfx, *cp;
38- const char *resid;
39+ char *pfx;
40+ const char *cp, *resid;
41 unsigned int pfxlen;
42 krb5_error_code err;
43 const krb5_cc_ops *ops;
44diff --git a/src/lib/krb5/os/expand_path.c b/src/lib/krb5/os/expand_path.c
45index 5cbccf0..6569b88 100644
46--- a/src/lib/krb5/os/expand_path.c
47+++ b/src/lib/krb5/os/expand_path.c
48@@ -454,7 +454,8 @@ k5_expand_path_tokens_extra(krb5_context context, const char *path_in,
49 {
50 krb5_error_code ret;
51 struct k5buf buf;
52- char *tok_begin, *tok_end, *tok_val, **extra_tokens = NULL, *path;
53+ const char *tok_begin, *tok_end;
54+ char *tok_val, **extra_tokens = NULL, *path;
55 const char *path_left;
56 size_t nargs = 0, i;
57 va_list ap;
58diff --git a/src/lib/krb5/os/locate_kdc.c b/src/lib/krb5/os/locate_kdc.c
59index d1df04a..6559465 100644
60--- a/src/lib/krb5/os/locate_kdc.c
61+++ b/src/lib/krb5/os/locate_kdc.c
62@@ -214,8 +214,8 @@ oom:
63 }
64
65 static void
66-parse_uri_if_https(const char *host_or_uri, k5_transport *transport,
67- const char **host, const char **uri_path)
68+parse_uri_if_https(char *host_or_uri, k5_transport *transport,
69+ char **host, const char **uri_path)
70 {
71 char *cp;
72
73@@ -257,8 +257,7 @@ locate_srv_conf_1(krb5_context context, const krb5_data *realm,
74 k5_transport transport, int udpport)
75 {
76 const char *realm_srv_names[4];
77- char **hostlist = NULL, *realmstr = NULL, *host = NULL;
78- const char *hostspec;
79+ char **hostlist = NULL, *realmstr = NULL, *host = NULL, *hostspec;
80 krb5_error_code code;
81 size_t i;
82 int default_port;
83@@ -587,8 +586,8 @@ prof_locate_server(krb5_context context, const krb5_data *realm,
84 * Return a NULL *host_out if there are any problems parsing the URI.
85 */
86 static void
87-parse_uri_fields(const char *uri, k5_transport *transport_out,
88- const char **host_out, int *primary_out)
89+parse_uri_fields(char *uri, k5_transport *transport_out,
90+ char **host_out, int *primary_out)
91
92 {
93 k5_transport transport;
94@@ -656,8 +655,8 @@ locate_uri(krb5_context context, const krb5_data *realm,
95 krb5_error_code ret;
96 k5_transport transport, host_trans;
97 struct srv_dns_entry *answers, *entry;
98- char *host, *sitename;
99- const char *host_field, *path;
100+ char *host, *sitename, *host_field;
101+ const char *path;
102 int port, def_port, primary;
103
104 ret = get_sitename(context, realm, &sitename);
105diff --git a/src/plugins/preauth/pkinit/pkinit_crypto.h b/src/plugins/preauth/pkinit/pkinit_crypto.h
106index 57bb3cb..be2d02c 100644
107--- a/src/plugins/preauth/pkinit/pkinit_crypto.h
108+++ b/src/plugins/preauth/pkinit/pkinit_crypto.h
109@@ -440,7 +440,7 @@ krb5_error_code crypto_load_cas_and_crls
110 defines the storage type (file, directory, etc) */
111 int catype, /* IN
112 defines the ca type (anchor, intermediate, crls) */
113- char *id); /* IN
114+ const char *id); /* IN
115 defines the location (filename, directory name, etc) */
116
117 /*
118diff --git a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
119index f222dbd..0a731a8 100644
120--- a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
121+++ b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
122@@ -4999,7 +4999,7 @@ load_cas_and_crls(krb5_context context,
123 pkinit_req_crypto_context req_cryptoctx,
124 pkinit_identity_crypto_context id_cryptoctx,
125 int catype,
126- char *filename)
127+ const char *filename)
128 {
129 STACK_OF(X509_INFO) *sk = NULL;
130 STACK_OF(X509) *ca_certs = NULL;
131@@ -5157,7 +5157,7 @@ load_cas_and_crls_dir(krb5_context context,
132 pkinit_req_crypto_context req_cryptoctx,
133 pkinit_identity_crypto_context id_cryptoctx,
134 int catype,
135- char *dirname)
136+ const char *dirname)
137 {
138 krb5_error_code retval = EINVAL;
139 char **fnames = NULL, *filename;
140@@ -5201,7 +5201,7 @@ crypto_load_cas_and_crls(krb5_context context,
141 pkinit_identity_crypto_context id_cryptoctx,
142 int idtype,
143 int catype,
144- char *id)
145+ const char *id)
146 {
147 switch (idtype) {
148 case IDTYPE_FILE:
149diff --git a/src/plugins/preauth/pkinit/pkinit_identity.c b/src/plugins/preauth/pkinit/pkinit_identity.c
150index 0dcfcfc..ad65f23 100644
151--- a/src/plugins/preauth/pkinit/pkinit_identity.c
152+++ b/src/plugins/preauth/pkinit/pkinit_identity.c
153@@ -473,7 +473,7 @@ process_option_ca_crl(krb5_context context,
154 const char *value,
155 int catype)
156 {
157- char *residual;
158+ const char *residual;
159 unsigned int typelen;
160 int idtype;
161
162diff --git a/src/plugins/preauth/pkinit/pkinit_matching.c b/src/plugins/preauth/pkinit/pkinit_matching.c
163index 0ea072c..b3c8df1 100644
164--- a/src/plugins/preauth/pkinit/pkinit_matching.c
165+++ b/src/plugins/preauth/pkinit/pkinit_matching.c
166@@ -262,7 +262,7 @@ parse_rule_component(krb5_context context,
167 char err_buf[128];
168 int ret;
169 struct keyword_desc *kw, *nextkw;
170- char *nk;
171+ const char *nk;
172 int found_next_kw = 0;
173 char *value = NULL;
174 size_t len;
175diff --git a/src/tests/responder.c b/src/tests/responder.c
176index 82f870e..4221a20 100644
177--- a/src/tests/responder.c
178+++ b/src/tests/responder.c
179@@ -282,8 +282,7 @@ responder(krb5_context ctx, void *rawdata, krb5_responder_context rctx)
180 /* Provide a particular response for an OTP challenge. */
181 if (data->otp_answer != NULL) {
182 if (krb5_responder_otp_get_challenge(ctx, rctx, &ochl) == 0) {
183- key = strchr(data->otp_answer, '=');
184- if (key != NULL) {
185+ if (strchr(data->otp_answer, '=') != NULL) {
186 /* Make a copy of the answer that we can chop up. */
187 key = strdup(data->otp_answer);
188 if (key == NULL)
189--
1902.34.1
191
diff --git a/meta-oe/recipes-connectivity/krb5/krb5_1.22.2.bb b/meta-oe/recipes-connectivity/krb5/krb5_1.22.2.bb
index 507a1b2381..5d8ab2dc01 100644
--- a/meta-oe/recipes-connectivity/krb5/krb5_1.22.2.bb
+++ b/meta-oe/recipes-connectivity/krb5/krb5_1.22.2.bb
@@ -21,6 +21,7 @@ inherit autotools-brokensep binconfig perlnative systemd update-rc.d pkgconfig
21SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}" 21SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
22SRC_URI = "http://web.mit.edu/kerberos/dist/${BPN}/${SHRT_VER}/${BP}.tar.gz \ 22SRC_URI = "http://web.mit.edu/kerberos/dist/${BPN}/${SHRT_VER}/${BP}.tar.gz \
23 file://debian-suppress-usr-lib-in-krb5-config.patch;striplevel=2 \ 23 file://debian-suppress-usr-lib-in-krb5-config.patch;striplevel=2 \
24 file://fix-strchr-conformance-to-C23.patch;striplevel=2 \
24 file://crosscompile_nm.patch \ 25 file://crosscompile_nm.patch \
25 file://etc/init.d/krb5-kdc \ 26 file://etc/init.d/krb5-kdc \
26 file://etc/init.d/krb5-admin-server \ 27 file://etc/init.d/krb5-admin-server \