WSL2-Linux-Kernel/lib
Ilya Dryomov 7bd57fbc4a vsprintf: don't obfuscate NULL and error pointers
I don't see what security concern is addressed by obfuscating NULL
and IS_ERR() error pointers, printed with %p/%pK.  Given the number
of sites where %p is used (over 10000) and the fact that NULL pointers
aren't uncommon, it probably wouldn't take long for an attacker to
find the hash that corresponds to 0.  Although harder, the same goes
for most common error values, such as -1, -2, -11, -14, etc.

The NULL part actually fixes a regression: NULL pointers weren't
obfuscated until commit 3e5903eb9c ("vsprintf: Prevent crash when
dereferencing invalid pointers") which went into 5.2.  I'm tacking
the IS_ERR() part on here because error pointers won't leak kernel
addresses and printing them as pointers shouldn't be any different
from e.g. %d with PTR_ERR_OR_ZERO().  Obfuscating them just makes
debugging based on existing pr_debug and friends excruciating.

Note that the "always print 0's for %pK when kptr_restrict == 2"
behaviour which goes way back is left as is.

Example output with the patch applied:

                             ptr         error-ptr              NULL
 %p:            0000000001f8cc5b  fffffffffffffff2  0000000000000000
 %pK, kptr = 0: 0000000001f8cc5b  fffffffffffffff2  0000000000000000
 %px:           ffff888048c04020  fffffffffffffff2  0000000000000000
 %pK, kptr = 1: ffff888048c04020  fffffffffffffff2  0000000000000000
 %pK, kptr = 2: 0000000000000000  0000000000000000  0000000000000000

Fixes: 3e5903eb9c ("vsprintf: Prevent crash when dereferencing invalid pointers")
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-05-19 11:35:38 -07:00
..
842
crypto crypto: arm64/chacha - correctly walk through blocks 2020-03-20 14:35:27 +11:00
dim
fonts
kunit kunit: Add missing newline in summary message 2020-04-23 15:42:00 -06:00
livepatch
lz4
lzo
math
mpi lib/mpi: Fix building for powerpc with clang 2020-04-24 13:14:59 +10:00
raid6 x86: update AS_* macros to binutils >=2.23, supporting ADX and AVX2 2020-04-09 00:12:48 +09:00
reed_solomon
vdso lib/vdso: Enable common headers 2020-03-21 15:24:03 +01:00
xz
zlib_deflate lib/zlib: add zlib_deflate_dfltcc_enabled() function 2020-01-31 10:30:40 -08:00
zlib_dfltcc lib/zlib: add zlib_deflate_dfltcc_enabled() function 2020-01-31 10:30:40 -08:00
zlib_inflate lib/zlib: add s390 hardware support for kernel zlib_inflate 2020-01-31 10:30:40 -08:00
zstd
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
Kconfig mm/memremap_pages: Introduce memremap_compat_align() 2020-02-20 16:58:55 -08:00
Kconfig.debug Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf 2020-04-09 17:39:22 -07:00
Kconfig.kasan
Kconfig.kgdb
Kconfig.ubsan ubsan: disable UBSAN_ALIGNMENT under COMPILE_TEST 2020-05-07 19:27:21 -07:00
Makefile ubsan: add trap instrumentation option 2020-04-07 10:43:44 -07:00
argv_split.c
ashldi3.c
ashrdi3.c
asn1_decoder.c
assoc_array.c
atomic64.c
atomic64_test.c
audit.c
bcd.c
bch.c lib/bch.c: replace zero-length array with flexible-array member 2020-04-07 10:43:42 -07:00
bitmap.c lib: rework bitmap_parse() 2020-02-04 03:05:26 +00:00
bitrev.c
bootconfig.c tools/bootconfig: Show line and column in parse error 2020-03-03 17:38:42 -05:00
bsearch.c
btree.c
bucket_locks.c
bug.c
build_OID_registry
bust_spinlocks.c
check_signature.c
checksum.c
clz_ctz.c
clz_tab.c
cmdline.c
cmpdi2.c
compat_audit.c
cpu_rmap.c
cpumask.c sched/core: Distribute tasks within affinity masks 2020-03-20 13:06:18 +01:00
crc-ccitt.c
crc-itu-t.c
crc-t10dif.c
crc4.c
crc7.c
crc8.c
crc16.c
crc32.c
crc32defs.h
crc32test.c
crc64.c
ctype.c
debug_info.c
debug_locks.c
debugobjects.c
dec_and_lock.c
decompress.c
decompress_bunzip2.c
decompress_inflate.c lib/zlib: add s390 hardware support for kernel zlib_inflate 2020-01-31 10:30:40 -08:00
decompress_unlz4.c
decompress_unlzma.c
decompress_unlzo.c
decompress_unxz.c
devres.c
digsig.c
dump_stack.c
dynamic_debug.c lib/dynamic_debug.c: use address-of operator on section symbols 2020-04-07 10:43:43 -07:00
dynamic_queue_limits.c
earlycpio.c
errname.c
error-inject.c
errseq.c
extable.c
fault-inject.c
fdt.c
fdt_addresses.c
fdt_empty_tree.c
fdt_ro.c
fdt_rw.c
fdt_strerror.c
fdt_sw.c
fdt_wip.c
find_bit.c lib/find_bit.c: uninline helper _find_next_bit() 2020-01-31 10:30:41 -08:00
find_bit_benchmark.c
flex_proportions.c
gen_crc32table.c
gen_crc64table.c
genalloc.c
generic-radix-tree.c
glob.c
globtest.c
hexdump.c
hweight.c
idr.c
inflate.c
interval_tree.c
interval_tree_test.c
iomap.c
iomap_copy.c
iommu-helper.c
ioremap.c
iov_iter.c
irq_poll.c
irq_regs.c
is_single_threaded.c
kasprintf.c
kfifo.c
klist.c
kobject.c
kobject_uevent.c
kstrtox.c
kstrtox.h
libcrc32c.c
list-test.c Fix linked-list KUnit test when run multiple times 2020-03-25 16:38:39 -06:00
list_debug.c
list_sort.c
llist.c
locking-selftest-hardirq.h
locking-selftest-mutex.h
locking-selftest-rlock-hardirq.h
locking-selftest-rlock-softirq.h
locking-selftest-rlock.h
locking-selftest-rsem.h
locking-selftest-rtmutex.h
locking-selftest-softirq.h
locking-selftest-spin-hardirq.h
locking-selftest-spin-softirq.h
locking-selftest-spin.h
locking-selftest-wlock-hardirq.h
locking-selftest-wlock-softirq.h
locking-selftest-wlock.h
locking-selftest-wsem.h
locking-selftest.c
lockref.c
logic_pio.c
lru_cache.c
lshrdi3.c
memcat_p.c
memory-notifier-error-inject.c
memregion.c
memweight.c
muldi3.c
net_utils.c
netdev-notifier-error-inject.c
nlattr.c
nmi_backtrace.c
nodemask.c
notifier-error-inject.c
notifier-error-inject.h
objagg.c lib: objagg: Replace zero-length arrays with flexible-array member 2020-02-16 18:33:00 -08:00
of-reconfig-notifier-error-inject.c
oid_registry.c
once.c
packing.c
parman.c
parser.c
pci_iomap.c
percpu-refcount.c percpu_ref: Fix comment regarding percpu_ref_init flags 2020-03-05 13:10:26 -08:00
percpu_counter.c
percpu_test.c
plist.c
pm-notifier-error-inject.c
radix-tree.c ida: remove abandoned macros 2020-01-31 15:09:49 -05:00
random32.c
ratelimit.c
rbtree.c lib/rbtree: fix coding style of assignments 2020-04-07 10:43:43 -07:00
rbtree_test.c
refcount.c
rhashtable.c
sbitmap.c
scatterlist.c lib/scatterlist: fix sg_copy_buffer() kerneldoc 2020-04-07 10:43:43 -07:00
seq_buf.c
sg_pool.c
sg_split.c
sha1.c
show_mem.c
siphash.c
smp_processor_id.c
sort.c
stackdepot.c kasan: stackdepot: move filter_irq_stacks() to stackdepot.c 2020-04-07 10:43:43 -07:00
stmp_device.c
string.c lib/string.c: update match_string() doc-strings with correct behavior 2020-02-21 11:22:15 -08:00
string_helpers.c
strncpy_from_user.c
strnlen_user.c
syscall.c
test-kstrtox.c
test-string_helpers.c
test_bitfield.c
test_bitmap.c lib/test_bitmap.c: make use of EXP2_IN_BITS 2020-04-07 10:43:43 -07:00
test_blackhole_dev.c
test_bpf.c bpf/tests: Use migrate disable instead of preempt disable 2020-02-24 16:20:09 -08:00
test_debug_virtual.c
test_firmware.c test_firmware: add support for firmware_request_platform 2020-03-20 14:54:04 +01:00
test_hash.c
test_hexdump.c
test_ida.c
test_kasan.c kasan: add test for invalid size in memmove 2020-04-02 09:35:30 -07:00
test_kmod.c lib/test_kmod.c: remove a NULL test 2020-04-07 10:43:43 -07:00
test_list_sort.c
test_lockup.c lib/test_lockup.c: add parameters for locking generic vfs locks 2020-04-07 10:43:42 -07:00
test_memcat_p.c
test_meminit.c
test_min_heap.c lib: Introduce generic min-heap 2020-03-06 11:56:59 +01:00
test_module.c
test_objagg.c
test_overflow.c
test_parman.c
test_printf.c vsprintf: don't obfuscate NULL and error pointers 2020-05-19 11:35:38 -07:00
test_rhashtable.c
test_siphash.c
test_sort.c
test_stackinit.c lib: test_stackinit.c: XFAIL switch variable init tests 2020-04-07 10:43:43 -07:00
test_static_key_base.c
test_static_keys.c
test_string.c
test_strscpy.c
test_sysctl.c
test_ubsan.c
test_user_copy.c
test_uuid.c
test_vmalloc.c
test_xarray.c XArray: Fix xas_pause for large multi-index entries 2020-01-31 15:09:49 -05:00
textsearch.c
timerqueue.c
ts_bm.c lib/ts_bm.c: replace zero-length array with flexible-array member 2020-04-07 10:43:42 -07:00
ts_fsm.c lib/ts_fsm.c: replace zero-length array with flexible-array member 2020-04-07 10:43:43 -07:00
ts_kmp.c lib/ts_kmp.c: replace zero-length array with flexible-array member 2020-04-07 10:43:43 -07:00
ubsan.c ubsan: include bug type in report header 2020-04-07 10:43:44 -07:00
ubsan.h
ucmpdi2.c
ucs2_string.c
usercopy.c
uuid.c uuid: Provide a GUID generator for raw buffer 2020-03-23 17:01:47 +01:00
vsprintf.c vsprintf: don't obfuscate NULL and error pointers 2020-05-19 11:35:38 -07:00
win_minmax.c
xarray.c xarray: Fix early termination of xas_for_each_marked 2020-03-12 17:42:08 -04:00
xxhash.c