Re: [PATCH v2 0/4] add variadic format checking
Ben Dooks <[email protected]> Mon, 5 Jan 2026 08:58:23 +0000
| Newsgroups | org.kernel.vger.linux-sparse |
|---|---|
| Organization | Codethink Limited. |
| Message-ID | <[email protected]> |
On 22/12/2025 16:00, Ben Dooks wrote: > Second version of this, I think mostly sorting the issues > identified in review. > > This series (which was initially sent back in 2020) adds the > ability to deal with __attribute__((format) and checking the > arguments to formatted variadic functions. > > I have been considering adding a -Wformat-linux to this as > the kernel now has a number of extra formatting options and > checking the type of these would be useful. An even nicer > extension would be some way of informing the compiler/sparse > of these at compile time (but would need to get agreement on > how to do this with the compilers too) Having tested on the kernel, there's a couple of issues with this code, that i've mostly fixed. Adding kernel type checking didn't come up with anything on my riscv build other than a few signed v unsigned. > Ben Dooks (4): > parse: initial parsing of __attribute__((format)) > add -Wformat > evaluate: check variadic argument types against formatting info > tests: add varargs printf format tests > > Makefile | 1 + > builtin.c | 4 +- > evaluate.c | 14 +- > evaluate.h | 10 +- > options.c | 2 + > options.h | 1 + > parse.c | 83 ++++- > sparse.1 | 8 + > symbol.h | 10 +- > validation/varargs-format-addrspace1.c | 36 ++ > validation/varargs-format-bad.c | 18 + > validation/varargs-format-checking.c | 21 ++ > validation/varargs-format-position.c | 32 ++ > validation/varargs-format-prefix.c | 19 + > validation/varargs-format-tests.c | 55 +++ > validation/varargs-type-formattest.c | 117 +++++++ > verify-format.c | 460 +++++++++++++++++++++++++ > verify-format.h | 6 + > 18 files changed, 887 insertions(+), 10 deletions(-) > create mode 100644 validation/varargs-format-addrspace1.c > create mode 100644 validation/varargs-format-bad.c > create mode 100644 validation/varargs-format-checking.c > create mode 100644 validation/varargs-format-position.c > create mode 100644 validation/varargs-format-prefix.c > create mode 100644 validation/varargs-format-tests.c > create mode 100644 validation/varargs-type-formattest.c > create mode 100644 verify-format.c > create mode 100644 verify-format.h > -- Ben Dooks http://www.codethink.co.uk/ Senior Engineer Codethink - Providing Genius https://www.codethink.co.uk/privacy.html