Rasmus Villemoes
251c723455
lib/test_printf.c: test dentry printing
...
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk >
Cc: Al Viro <viro@ZenIV.linux.org.uk >
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Joe Perches <joe@perches.com >
Cc: Kees Cook <keescook@chromium.org >
Cc: Maurizio Lombardi <mlombard@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-01-16 11:17:29 -08:00
Rasmus Villemoes
857cca4d56
lib/test_printf.c: add test for large bitmaps
...
Following "lib/vsprintf.c: expand field_width to 24 bits", let's add a
test to see that we now actually support bitmaps with 65536 bits.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk >
Acked-by: Kees Cook <keescook@chromium.org >
Cc: Al Viro <viro@ZenIV.linux.org.uk >
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Joe Perches <joe@perches.com >
Cc: Maurizio Lombardi <mlombard@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-01-16 11:17:29 -08:00
Rasmus Villemoes
b79a7db37d
lib/test_printf.c: account for kvasprintf tests
...
These should also count as performed tests.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk >
Acked-by: Kees Cook <keescook@chromium.org >
Cc: Al Viro <viro@ZenIV.linux.org.uk >
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Joe Perches <joe@perches.com >
Cc: Maurizio Lombardi <mlombard@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-01-16 11:17:29 -08:00
Rasmus Villemoes
1ca8e8ebe9
lib/test_printf.c: add a few number() tests
...
This adds a few tests to test_number, one of which serves to document
another deviation from POSIX/C99 (printing 0 with an explicit precision
of 0).
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk >
Cc: Al Viro <viro@ZenIV.linux.org.uk >
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Joe Perches <joe@perches.com >
Cc: Kees Cook <keescook@chromium.org >
Cc: Maurizio Lombardi <mlombard@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-01-16 11:17:28 -08:00
Rasmus Villemoes
f176eb4ce9
lib/test_printf.c: test precision quirks
...
The kernel's printf doesn't follow the standards in a few corner cases
(which are probably mostly irrelevant). Add tests that document the
current behaviour.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk >
Cc: Al Viro <viro@ZenIV.linux.org.uk >
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Joe Perches <joe@perches.com >
Cc: Kees Cook <keescook@chromium.org >
Cc: Maurizio Lombardi <mlombard@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-01-16 11:17:28 -08:00
Rasmus Villemoes
331e4deb6d
lib/test_printf.c: check for out-of-bound writes
...
Add a few padding bytes on either side of the test buffer, and check
that these (and the part of the buffer not used) are untouched by
vsnprintf.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk >
Acked-by: Kees Cook <keescook@chromium.org >
Cc: Al Viro <viro@ZenIV.linux.org.uk >
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Joe Perches <joe@perches.com >
Cc: Maurizio Lombardi <mlombard@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-01-16 11:17:28 -08:00
Rasmus Villemoes
fd0515d50f
lib/test_printf.c: don't BUG
...
BUG is a completely unnecessarily big hammer, and we're more likely to
get the internal bug reported if we just pr_err() and ensure the test
suite fails.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk >
Acked-by: Kees Cook <keescook@chromium.org >
Cc: Al Viro <viro@ZenIV.linux.org.uk >
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: Joe Perches <joe@perches.com >
Cc: Maurizio Lombardi <mlombard@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-01-16 11:17:27 -08:00
Rasmus Villemoes
707cc7280f
test_printf: test printf family at runtime
...
This adds a simple module for testing the kernel's printf facilities.
Previously, some %p extensions have caused a wrong return value in case
the entire output didn't fit and/or been unusable in kasprintf(). This
should help catch such issues. Also, it should help ensure that changes
to the formatting algorithms don't break anything.
I'm not sure if we have a struct dentry or struct file lying around at
boot time or if we can fake one, but most %p extensions should be
testable, as should the ordinary number and string formatting.
The nature of vararg functions means we can't use a more conventional
table-driven approach.
For now, this is mostly a skeleton; contributions are very
welcome. Some tests are/will be slightly annoying to write, since the
expected output depends on stuff like CONFIG_*, sizeof(long), runtime
values etc.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk >
Reviewed-by: Kees Cook <keescook@chromium.org >
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com >
Cc: Martin Kletzander <mkletzan@redhat.com >
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2015-11-06 17:50:42 -08:00