• Linus Torvalds's avatar
    Fix broken audit tests for exec arg len · a4664afa
    Linus Torvalds authored
    [ Upstream commit 45820c29 ]
    
    The "fix" in commit 0b08c5e5 ("audit: Fix check of return value of
    strnlen_user()") didn't fix anything, it broke things.  As reported by
    Steven Rostedt:
    
     "Yes, strnlen_user() returns 0 on fault, but if you look at what len is
      set to, than you would notice that on fault len would be -1"
    
    because we just subtracted one from the return value.  So testing
    against 0 doesn't test for a fault condition, it tests against a
    perfectly valid empty string.
    
    Also fix up the usual braindamage wrt using WARN_ON() inside a
    conditional - make it part of the conditional and remove the explicit
    unlikely() (which is already part of the WARN_ON*() logic, exactly so
    that you don't have to write unreadable code.
    Reported-and-tested-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Paul Moore <pmoore@redhat.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
    a4664afa
auditsc.c 64 KB