Re: Build failure with Clang/LLVM 22 due to alloc-size diagnostic
Zhenlei Huang <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.hackers,gmane.os.freebsd.devel.net |
|---|---|
| Message-ID | <[email protected]> |
> On Sep 19, 2025, at 3:42 AM, Paul Vixie <[email protected]> wrote: > > On Donderdag 18 September 2025 14:29:36 UTC Zhenlei Huang wrote: > > > On Sep 18, 2025, at 7:17 PM, Nakayama Kenjiro <[email protected]> > > > ... > > > freebsd/sys/netinet/in_mcast.c:749:10: error: allocation of insufficient > > > size '40' for type 'struct ip_msource' with size '48' > > > ... > > The following lines has this > > ``` > > lims = (struct in_msource *)nims; > > ``` > > > > So probably assign the alloced memory directly to lims would make Clang > > happy, say ``` > > lims = malloc(sizeof( .... ; > > nims = (struct ip_mfilter *)lims; > > ``` > > > > You can have a try with that. Good luck with you ! > > ideally, clang will eventually get around to complaining about that type cast on the same basis (destination points to a longer object than the source.) is there a reason we're not using a union{} for this data? I've no idea why not using a union, probably because it wastes a little memory ? In C world, basically it is the developer's duty to ensure no out of bounds memory access. I'm not sure how many type casts like this will make Clang unhappy, but I think the first step would be turning the warning on but not fail the build, so that it is easy to do statistic and then plan what to do next. > > -- > Paul Vixie Best regards, Zhenlei