This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fcntl receiving -1 from fileno, fcntl failing.
authorJarkko Hietaniemi <jhi@iki.fi>
Thu, 29 May 2014 16:36:28 +0000 (12:36 -0400)
committerJarkko Hietaniemi <jhi@iki.fi>
Thu, 29 May 2014 16:37:38 +0000 (12:37 -0400)
commit375ed12a42c6092b1af1d8e395bf3dadd9a66e48
tree2719822ab13ccf099d01e8818f6e6e36a9e67cb5
parent316ebaf2966c5b6fd47a9d1dc6fb64fcbd262379
fcntl receiving -1 from fileno, fcntl failing.

(Also very few spots of negative numgroups for getgroups(),
and fgetc() return, but almost all checking is for fcntl.)

(merged fix for perl #121743 and perl #121745: hopefully
picked up all the fixes-to-fixes from the ticket...)

Fix for Coverity perl5 CIDs 28990..29003,29005..29011,29013,
45354,45363,49926:

Argument cannot be negative (NEGATIVE_RETURNS) fd is
passed to a parameter that cannot be negative.

and CIDs 29004, 29012:
Argument cannot be negative (NEGATIVE_RETURNS)
num_groups is passed to a parameter that cannot be negative

and because of CIDs 29005 and 29006 also CID 28924.

In the first set of issues a fd is retrieved from PerlIO_fileno, and
that is then used in places like fstat(), fchown(), dup(), etc.,
without checking whether the fd is valid (>=0).

In the second set of issues a potentially negative
number is potentially passed to getgroups().

The CIDs 29005 and 29006 were a bit messy: fixing them needed also
resolving CID 28924 where the return value of fstat() was ignored,
and for completeness adding two croak calls (with perldiag updates):
a bit of a waste since it's suidperl code.
dist/IO/IO.xs
dist/threads/threads.xs
doio.c
ext/PerlIO-mmap/mmap.xs
mg.c
perl.c
perlio.c
pod/perldiag.pod
pp_sys.c
util.c