unsigned long name = reinterpret_cast<unsigned long>(nullptr);
prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, start, len, name);
will crash in internal_strlen
called from the prctl asan interceptor.
man 2 prctl
states:
PR_SET_VMA (since Linux 5.17)
PR_SET_VMA_ANON_NAME
If arg5 is NULL, the name of the appropriate anonymous virtual memory areas will be re‐set.
So it is valid and expected to be able to call prctl
with the 5th parameter set to NULL
. It's UB to call strlen
with NULL
; and in this case, internal_strlen
immediately dereferences the pointer it's given.
a4c97e1
cc @vitalybuka @eugenis @devnexen