• Miloslav Trmac's avatar
    Audit: fix handling of 'strings' with NULL characters · b3897f56
    Miloslav Trmac authored
    currently audit_log_n_untrustedstring() uses audit_string_contains_control()
    to check if the 'string' has any control characters.  If the 'string' has an
    embedded NULL audit_string_contains_control() will return that the data has
    no control characters and will then pass the string to audit_log_n_string
    with the total length, not the length up to the first NULL.
    audit_log_n_string() does a memcpy of the entire length and so the actual
    audit record emitted may then contain a NULL and then whatever random memory
    is after the NULL.
    
    Since we want to log the entire octet stream (if we can't trust the data
    to be a string we can't trust that a NULL isn't actually a part of it)
    we should just consider NULL as a control character.  If the caller is
    certain they want to stop at the first NULL they should be using
    audit_log_untrustedstring.
    Signed-off-by: default avatarEric Paris <eparis@redhat.com>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    b3897f56
audit.c 39.7 KB