Bug 16006 - warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] and C26 fixes
Summary: warning: assignment discards 'const' qualifier from pointer target type [-Wdi...
Status: RESOLVED FIXED
Alias: None
Product: Samba 4.1 and newer
Classification: Unclassified
Component: Build (show other bugs)
Version: 4.24.0rc*
Hardware: All All
: P5 normal (vote)
Target Milestone: ---
Assignee: Samba release manager
QA Contact: Samba QA Contact
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-02-22 13:20 UTC by Rudi Heitbaum
Modified: 2026-09-03 08:02 UTC (History)
3 users (show)

See Also:


Attachments
Patch for 4.24 backported from master (110.19 KB, patch)
2026-06-27 09:23 UTC, Ralph Böhme
metze: review+
slow: review? (metze)
Details
Patch for 4.23 backported from master (107.30 KB, patch)
2026-06-27 09:37 UTC, Ralph Böhme
asn: review+
metze: review+
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Rudi Heitbaum 2026-02-22 13:20:29 UTC
Building samba-4.24.0rc2 with glibc-2.43 and gcc-15/16 results in the following warnings.

Since glibc-2.43 and 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.

https://lists.gnu.org/archive/html/info-gnu/2026-01/msg00005.html

../../third_party/heimdal/lib/base/db.c:359:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/base/db.c:1329:21: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/base/bsearch.c:819:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../lib/util/charset/util_str.c:370:24: warning: return discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../lib/util/charset/util_str.c:420:24: warning: return discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../lib/util/smb_strtox.c:83:24: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../lib/util/smb_strtox.c:159:24: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../lib/util/base64.c:51:24: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/base/expand_path.c:642:19: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/base/db.c:359:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/base/db.c:1329:21: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/base/bsearch.c:819:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/asn1/oid_resolution.c:186:18: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/asn1/oid_resolution.c:194:15: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/wind/normalize.c:141:23: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/wind/combining.c:53:15: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/wind/bidi.c:55:15: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/wind/bidi.c:65:15: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/hx509/name.c:931:15: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/krb5/addr_families.c:478:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../lib/ldb/common/ldb_ldif.c:117:24: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../lib/ldb/common/ldb_modules.c:202:15: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source4/dsdb/common/util.c:5867:11: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source4/dsdb/common/util.c:5886:11: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../auth/credentials/credentials.c:397:27: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../auth/credentials/credentials.c:487:35: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../auth/credentials/credentials.c:500:27: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../lib/util/smb_strtox.c:83:24: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../lib/util/smb_strtox.c:159:24: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../nsswitch/libwbclient/wbc_sid.c:720:27: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../nsswitch/libwbclient/wbc_sid.c:851:27: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../nsswitch/libwbclient/wbc_sid.c:933:19: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../nsswitch/libwbclient/wbc_sid.c:1017:19: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source4/dsdb/samdb/cracknames.c:1196:11: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source4/dsdb/samdb/cracknames.c:1576:11: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../lib/addns/dnsquery_srv.c:348:27: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/lib/wins_srv.c:185:19: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/param/util.c:30:11: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/param/util.c:45:11: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../librpc/rpc/binding.c:398:19: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/libsmb/cliconnect.c:2535:27: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../libcli/auth/netlogon_creds_cli.c:172:11: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../lib/cmdline/cmdline.c:241:16: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../lib/cmdline/cmdline.c:245:30: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/smbd/mangle_hash.c:818:23: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/smbd/msdfs.c:136:11: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/smbd/mangle_hash2.c:461:15: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/smbd/mangle_hash2.c:705:15: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/smbd/smb1_lanman.c:733:16: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/smbd/filename.c:423:20: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/libsmb/libsmb_path.c:270:16: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/printing/nt_printing_migrate.c:317:27: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/printing/nt_printing.c:1168:30: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/printing/nt_printing.c:1168:30: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/printing/nt_printing.c:1168:30: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/printing/nt_printing.c:1168:30: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/printing/nt_printing.c:1168:30: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/rpc_server/rpc_host.c:317:14: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/modules/vfs_fruit.c:5341:11: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../source3/rpc_server/spoolss/srv_spoolss_nt.c:10167:20: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/base/db.c:359:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/base/db.c:1329:21: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/base/bsearch.c:819:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/base/expand_path.c:642:19: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
../../third_party/heimdal/lib/krb5/addr_families.c:478:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
Comment 1 Douglas Bagnall 2026-02-22 20:26:48 UTC
Looking at a small sample of these, it looks like we can just add const to some declarations. We are typically checking substrings of a const string, which in practice we still treat as const ("needle" here):


	char *needle = NULL;
        //...
	if ((flags & SMB_STR_ALLOW_NEGATIVE ) == 0) {
		/* did we convert a negative "number" ? */
		needle = strchr(nptr, '-');
		if (needle != NULL && needle < tmp_endptr) {
			*err = EINVAL;
			goto out;
		}

Having said that, I am not entirely sure the build should be allowing the compiler and libc to assume C23, but also I am also sort of glad it does. 

Rudi, are you thinking of providing patches?
Comment 2 Rudi Heitbaum 2026-02-22 20:31:16 UTC
Hi Douglas,

I have been doing patches for the other packages. Happy to do for samba too, probably just want a little guidance on how many patches we want / how they are broken up, before I create the commits and PR.
Comment 3 Douglas Bagnall 2026-02-22 20:52:08 UTC
I think perhaps we want one patch for all the simple ones -- those that will look like this:

-	char *needle = NULL;
+	const char *needle = NULL;


excluding all of /third_party/, which we need to fix upstream (or ignore).

Then we'd want separate patches for the ones that do something more tricky, perhaps because they reveal a real bug.


Also read https://www.samba.org/samba/devel/copyright-policy.html and https://wiki.samba.org/index.php/Contribute

and also... thanks!
Comment 4 Rudi Heitbaum 2026-02-23 01:28:12 UTC
Hi Douglas - patches written and PRed: https://gitlab.com/samba-team/samba/-/merge_requests/4428

Remaining warnings (not third_party/heimdal) are as below:

cache_mangled_name will need to be refactored - not to modify the const

../../source3/smbd/mangle_hash.c: In function 'cache_mangled_name':
../../source3/smbd/mangle_hash.c:818:23: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]

_spoolss_SetPrinterDataEx will need be refactored is oid_string does indeed need to modify r->in.value_name

../../source3/rpc_server/spoolss/srv_spoolss_nt.c: In function '_spoolss_SetPrinterDataEx':
../../source3/rpc_server/spoolss/srv_spoolss_nt.c:10167:20: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
10167 |         oid_string = strchr(r->in.value_name, ',');                                                                   |                    ^

printing_tdb_migrate_printer will need to be refactored as valuename is modifing the passed in const r.printer_data[j].name

../../source3/printing/nt_printing_migrate.c: In function 'printing_tdb_migrate_printer':
../../source3/printing/nt_printing_migrate.c:317:27: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
  317 |                 valuename = strchr(keyname, '\\');
      |                           ^
Comment 5 Samba QA Contact 2026-05-21 18:28:03 UTC
This bug was referenced in samba master:

39d53421d3b739f0c9911c18ad7c1251e84dd514
1af38323e1b3d45093d9aaf64ffa00ae9520ab3b
4f590a737be03c847885d70a3dadc9836e6e53d4
58059f27a64536731ae6f933c39de5f7d1b3f162
5765fa4d322315b510ab9b3afa0179590cf570d9
cb690b465adef7dc8cfccd4c1b0c1ea826c0a2ff
b5fd955ad5bf63b537076a9ef898c1954e767aad
68255504ffc00982a667affb406b8f36aaa85c7c
536c9e8452148eb60c6ec098a934dc24f4d54faf
c94ae0f4b8e61492f949e558a721eb4a55e1f9e5
284e345586d1188f6d455868fe1af4659fe1b116
Comment 6 Samba QA Contact 2026-05-27 12:29:03 UTC
This bug was referenced in samba master:

0bfe48199329396b3fa25a057d8095eceeaa65fa
29cf4ee46be849ae880a77d77cc9c2116fd970b8
Comment 7 Stefan Metzmacher 2026-05-27 12:48:40 UTC
If someone needs release branches to work with ./configure.developer
the above commits should be all collected into a backport.

For now I'll close it as master has the fixes now
Comment 8 Ralph Böhme 2026-06-27 09:04:16 UTC
Backports...
Comment 9 Ralph Böhme 2026-06-27 09:23:06 UTC
Created attachment 19039 [details]
Patch for 4.24 backported from master
Comment 10 Ralph Böhme 2026-06-27 09:37:33 UTC
Created attachment 19040 [details]
Patch for 4.23 backported from master

Dropped commit 12/13 "lib/util: fix test_talloc_keep_secret.c with memset_explicit in glibc" as it is not needed in 4.23.
Comment 11 Samba QA Contact 2026-06-30 16:51:11 UTC
This bug was referenced in samba v4-24-test:

893ae8aa0098754fa16fa3fa0da15c4bcc71dde6
64cf5f4cb60b522f8416ce7d22a32e10bf17fcf1
941c803e14fd0a13c11c54b4305cf96400185b56
5a4cf092fcfd24845fde156e64a42bbe23bdb98e
5a6bea140cf705785c2c2b736d0f1da43cef2b70
c7df845af01596c50c0edbb21647864fafce0625
a14b159db68662fbeb49e50d2f941d04034f579c
8e0f8a076d3f6fc558d91e1fae2887e94f6f1f9b
ffc8355dce925951b8136931b47c30e3ea26324a
8d565ca747525f5e6aed5341dcb7e795502551d5
c87e2da493342c5da42dd61cac711589cdcecbe5
c05f5e306ab9b771094aa879508e1164fd6a30bd
8b720d7373afa0b8e3e52672c362c9bf84bc6a80
Comment 12 Samba QA Contact 2026-06-30 19:43:37 UTC
This bug was referenced in samba v4-24-stable (Release samba-4.24.4):

893ae8aa0098754fa16fa3fa0da15c4bcc71dde6
64cf5f4cb60b522f8416ce7d22a32e10bf17fcf1
941c803e14fd0a13c11c54b4305cf96400185b56
5a4cf092fcfd24845fde156e64a42bbe23bdb98e
5a6bea140cf705785c2c2b736d0f1da43cef2b70
c7df845af01596c50c0edbb21647864fafce0625
a14b159db68662fbeb49e50d2f941d04034f579c
8e0f8a076d3f6fc558d91e1fae2887e94f6f1f9b
ffc8355dce925951b8136931b47c30e3ea26324a
8d565ca747525f5e6aed5341dcb7e795502551d5
c87e2da493342c5da42dd61cac711589cdcecbe5
c05f5e306ab9b771094aa879508e1164fd6a30bd
8b720d7373afa0b8e3e52672c362c9bf84bc6a80
Comment 13 Samba QA Contact 2026-07-24 14:37:06 UTC
This bug was referenced in samba master:

a83fc8f9cf5ccbc8e88f4cc81ae35947790122bc
Comment 14 Samba QA Contact 2026-07-28 15:56:12 UTC
This bug was referenced in samba v4-23-test:

4d64a48b59d8117cde2eb568ce2bb74cf707d4ce
ebdc52f913530597ad384c1cf18b68c5fcc47023
6f4761d95811fe963e3f4e39ca462703c9c5b50c
7ce7585b0022ba59c2ba4735349a71fb7822752c
2ceff98fb7efcb7766025f03fb12a1e97c51b0ec
92317bf9402a25a2d00daddc08acab62d476f3d7
4b4f58a92b039895dcdba6b887142e9b7230e575
ab93753086684d7214d7c8df95dd7eeedd8737f3
2c56e3d2ac7ac29f038dbca2ac9d2069eecdef6e
f3e5e6b080dc8a3a206e41e9218d3a9ea65a4bc0
c1d80c9fe7acb11fa291f5598c08496395636fb6
6fe74530b3846e012c2ddb3a9bfe646d72a1f09a
Comment 15 Samba QA Contact 2026-08-03 19:37:27 UTC
This bug was referenced in samba v4-23-stable (Release samba-4.23.11):

4d64a48b59d8117cde2eb568ce2bb74cf707d4ce
ebdc52f913530597ad384c1cf18b68c5fcc47023
6f4761d95811fe963e3f4e39ca462703c9c5b50c
7ce7585b0022ba59c2ba4735349a71fb7822752c
2ceff98fb7efcb7766025f03fb12a1e97c51b0ec
92317bf9402a25a2d00daddc08acab62d476f3d7
4b4f58a92b039895dcdba6b887142e9b7230e575
ab93753086684d7214d7c8df95dd7eeedd8737f3
2c56e3d2ac7ac29f038dbca2ac9d2069eecdef6e
f3e5e6b080dc8a3a206e41e9218d3a9ea65a4bc0
c1d80c9fe7acb11fa291f5598c08496395636fb6
6fe74530b3846e012c2ddb3a9bfe646d72a1f09a