Commit 6952aea
bpf: Reject %p% format string in bprintf-like helpers
[ Upstream commit f824274 ]
static const char fmt[] = "%p%";
bpf_trace_printk(fmt, sizeof(fmt));
The above BPF program isn't rejected and causes a kernel warning at
runtime:
Please remove unsupported %\x00 in format string
WARNING: CPU: 1 PID: 7244 at lib/vsprintf.c:2680 format_decode+0x49c/0x5d0
This happens because bpf_bprintf_prepare skips over the second %,
detected as punctuation, while processing %p. This patch fixes it by
not skipping over punctuation. %\x00 is then processed in the next
iteration and rejected.
Reported-by: [email protected]
Fixes: 48cac3f ("bpf: Implement formatted output helpers with bstr_printf")
Acked-by: Yonghong Song <[email protected]>
Signed-off-by: Paul Chaignon <[email protected]>
Link: https://lore.kernel.org/r/a0e06cc479faec9e802ae51ba5d66420523251ee.1751395489.git.paul.chaignon@gmail.com
Signed-off-by: Alexei Starovoitov <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>1 parent e806927 commit 6952aea
1 file changed
+8
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
883 | 883 | | |
884 | 884 | | |
885 | 885 | | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
886 | 893 | | |
887 | 894 | | |
888 | 895 | | |
889 | 896 | | |
890 | 897 | | |
891 | 898 | | |
892 | 899 | | |
893 | | - | |
894 | | - | |
| 900 | + | |
895 | 901 | | |
896 | 902 | | |
897 | | - | |
898 | 903 | | |
899 | 904 | | |
900 | 905 | | |
| |||
0 commit comments