Re: [PATCH BlueZ v1] gatt: add return value check of io_get_fd() to sock_io_send()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2024-07-02 at 11:00 -0400, Luiz Augusto von Dentz wrote:
> Hi Roman,
> 
> On Tue, Jul 2, 2024 at 9:41 AM Roman Smirnov <r.smirnov@xxxxxx> wrote:
> > 
> > It is necessary to add a return value check.
> > 
> > Found with the SVACE static analysis tool.
> > ---
> >  src/gatt-database.c | 9 ++++++++-
> >  1 file changed, 8 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/gatt-database.c b/src/gatt-database.c
> > index 5756eb9d1..99aa6b63a 100644
> > --- a/src/gatt-database.c
> > +++ b/src/gatt-database.c
> > @@ -2625,6 +2625,7 @@ static int sock_io_send(struct io *io, const void *data, size_t len)
> >  {
> >         struct msghdr msg;
> >         struct iovec iov;
> > +       int fd;
> > 
> >         iov.iov_base = (void *) data;
> >         iov.iov_len = len;
> > @@ -2633,7 +2634,13 @@ static int sock_io_send(struct io *io, const void *data, size_t len)
> >         msg.msg_iov = &iov;
> >         msg.msg_iovlen = 1;
> > 
> > -       return sendmsg(io_get_fd(io), &msg, MSG_NOSIGNAL);
> > +       fd = io_get_fd(io);
> > +       if (fd < 0) {
> > +               error("io_get_fd() returned %d\n", fd);
> > +               return fd;
> > +       }
> > +
> > +       return sendmsg(fd, &msg, MSG_NOSIGNAL);
> >  }
> 
> So static analyzers are complaining that we pass a negative fd to the
> likes of sendmsg? I assume that it was safe to pass it this way since
> the sendmsg would check that fd is valid and return an error, anyway
> it is valid point that if we catch it earlier than we can print a
> specific error rather then depend on sendmsg return, just wondering
> what is the static analyzer trying to do with respect to checking the
> values passed to syscalls.


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux