Message ID | 20180921124617.31327-1-kaslevs@vmware.com (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | [virt-server] trace-cmd: Fix a minor bug in `trace-cmd listen` | expand |
On Fri, 21 Sep 2018 15:46:17 +0300 Slavomir Kaslev <kaslevs@vmware.com> wrote: > There is a potential bug caused by C's operator precedence when checking > the flags set by `poll` in `trace-cmd listen`: > > if (!fds[i].revents & POLLIN) > continue; > > vs > > if (!(fds[i].revents & POLLIN)) > continue; > Nice catch! > Curiously enough, the bug doesn't manifest itself since POLLIN is equal > to 1 and `trace-cmd listen` waits only for read events so no other flags > will be set by `poll`. Funny how it worked out that way. Probably why it wasn't caught before, because if it didn't work out that way, it would have shown up quickly and have been fixed! -- Steve > > Signed-off-by: Slavomir Kaslev <kaslevs@vmware.com> > --- > tracecmd/trace-listen.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tracecmd/trace-listen.c b/tracecmd/trace-listen.c > index 7bc723e..c05c2d8 100644 > --- a/tracecmd/trace-listen.c > +++ b/tracecmd/trace-listen.c > @@ -2020,7 +2020,7 @@ static void do_accept_loop(int nfd, int vfd, int mfd) > continue; > } > > - if (!fds[i].revents & POLLIN) > + if (!(fds[i].revents & POLLIN)) > continue; > > if (i < FD_CONNECTED) {
diff --git a/tracecmd/trace-listen.c b/tracecmd/trace-listen.c index 7bc723e..c05c2d8 100644 --- a/tracecmd/trace-listen.c +++ b/tracecmd/trace-listen.c @@ -2020,7 +2020,7 @@ static void do_accept_loop(int nfd, int vfd, int mfd) continue; } - if (!fds[i].revents & POLLIN) + if (!(fds[i].revents & POLLIN)) continue; if (i < FD_CONNECTED) {
There is a potential bug caused by C's operator precedence when checking the flags set by `poll` in `trace-cmd listen`: if (!fds[i].revents & POLLIN) continue; vs if (!(fds[i].revents & POLLIN)) continue; Curiously enough, the bug doesn't manifest itself since POLLIN is equal to 1 and `trace-cmd listen` waits only for read events so no other flags will be set by `poll`. Signed-off-by: Slavomir Kaslev <kaslevs@vmware.com> --- tracecmd/trace-listen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)