Bug 16006 - warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
Summary: warning: assignment discards 'const' qualifier from pointer target type [-Wdi...
Status: NEW
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 QA Contact
QA Contact: Samba QA Contact
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-02-22 13:20 UTC by Rudi Heitbaum
Modified: 2026-02-23 01:28 UTC (History)
1 user (show)

See Also:


Attachments

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, '\\');
      |                           ^