kernel/audit.c control character detection is off-by-one
Hello, According to my understanding there is an off-by-one bug in the function: audit_string_contains_control() in: kernel/audit.c Patch is included. I do not know from how many places the function is called from, but for example, SELinux Access Vector Cache tries to log untrusted filenames via call path: avc_audit() audit_log_untrustedstring() audit_log_n_untrustedstring() audit_string_contains_control() If audit_string_contains_control() detects control characters, then the string is hex-encoded. But the hex=0x7f dec=127, DEL-character, is not detected. I guess this could have at least some minor security implications, since a user can create a filename with 0x7f in it, causing logged filename to possibly look different when someone reads it on the terminal. Signed-off-by: Vesa-Matti Kari <vmkari@cc.helsinki.fi> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
ee1d315663
commit
1d6c9649e2
1 changed files with 1 additions and 1 deletions
|
@ -1366,7 +1366,7 @@ int audit_string_contains_control(const char *string, size_t len)
|
||||||
{
|
{
|
||||||
const unsigned char *p;
|
const unsigned char *p;
|
||||||
for (p = string; p < (const unsigned char *)string + len && *p; p++) {
|
for (p = string; p < (const unsigned char *)string + len && *p; p++) {
|
||||||
if (*p == '"' || *p < 0x21 || *p > 0x7f)
|
if (*p == '"' || *p < 0x21 || *p > 0x7e)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in a new issue