• Eric W. Biederman's avatar
    signal: Fail sigqueueinfo if si_signo != sig · e75dc036
    Eric W. Biederman authored
    The kernel needs to validate that the contents of struct siginfo make
    sense as siginfo is copied into the kernel, so that the proper union
    members can be put in the appropriate locations.  The field si_signo
    is a fundamental part of that validation.  As such changing the
    contents of si_signo after the validation make no sense and can result
    in nonsense values in the kernel.
    
    As such simply fail if someone is silly enough to set si_signo out of
    sync with the signal number passed to sigqueueinfo.
    
    I don't expect a problem as glibc's sigqueue implementation sets
    "si_signo = sig" and CRIU just returns to the kernel what the kernel
    gave to it.
    
    If there is some application that calls sigqueueinfo directly that has
    a problem with this added sanity check we can revisit this when we see
    what kind of crazy that application is doing.
    Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
    e75dc036
signal.c 103 KB