On 2/28/24 17:48, Kees Cook wrote:
On Wed, Feb 28, 2024 at 09:56:51AM -0700, Nathan Chancellor wrote:
On Wed, Feb 28, 2024 at 08:41:07AM +0000, Lukasz Luba wrote:
Hi Nathan and Kees,
On 2/27/24 17:00, Kees Cook wrote:
On Tue, Feb 27, 2024 at 05:47:44PM +0100, Daniel Lezcano wrote:
Ok my misunderstanding was I thought sizeof() was calling _bdos under the
hood, so when calling sizeof(flex_array), it was returning the computed size
inferring from the __counted_by field.
Yeah, sizeof() has a very limited scope. __builtin_object_size() has
more flexibility (via the 2nd argument, "type"), but it was still
compile-time only. __builtin_dynamic_object_size() was added to bring
runtime evaluations into the mix (initially to support the alloc_size
attribute, and now includes the counted_by attribute too).
Thanks for your earlier emails explaining these stuff.
Do you have maybe some presentation about those features
for the kernel (ideally w/ a video from some conference)?
I think Kees's 2022 and 2023 talks at LPC are a good place to start:
https://youtu.be/tQwv79i02ks?si=Nj9hpvmQwPB4K3Y4&t=452
https://youtu.be/OEFFqhP5sts?si=u6RnOP641S8FkouD&t=614
https://outflux.net/slides/2022/lpc/features.pdf
https://outflux.net/slides/2023/lpc/features.pdf
I've also got a write-up on the entire topic of array bounds, which ends
with some discussion of "the future" (which is now) involving the use of
the "counted_by" attribute:
https://people.kernel.org/kees/bounded-flexible-arrays-in-c#coming-soon-annotate-bounds-of-flexible-arrays
Thank you guys!