Coverity flags si.ssi_signo as tainted data from read(), and warns
that casting it to signed could produce a negative value. Add an
explicit range check against INT_MAX before the SIGNAL_VALID check
to prove the cast is safe.
CID#
1548033
Follow-up for
c8b53fcfd3463679e6475e9b57b61a97dac1a287
if (_unlikely_(n != sizeof(si)))
return -EIO;
- if (_unlikely_(!SIGNAL_VALID(si.ssi_signo)))
+ if (_unlikely_(si.ssi_signo > INT_MAX)) /* Ensure value fits in int before casting */
return -EIO;
- /* Silence static analyzers */
- assert(si.ssi_signo < _NSIG);
+ if (_unlikely_(!SIGNAL_VALID(si.ssi_signo)))
+ return -EIO;
if (e->signal_sources)
s = e->signal_sources[si.ssi_signo];