]> granicus.if.org Git - strace/commitdiff
pathtrace: fail poll path match on first failed umove
authorEugene Syromyatnikov <evgsyr@gmail.com>
Thu, 20 Jul 2017 19:14:42 +0000 (21:14 +0200)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 14 Aug 2017 11:33:26 +0000 (11:33 +0000)
* pathtrace.c (pathtrace_match_set): When checking descriptors of poll
family syscalls for fd match, break the loop on first failed umove call.

pathtrace.c

index 4376b6c93451ea62a056416611128a345cf0a100..4585e26d218d889e254657bf492178b45d50e5a7 100644 (file)
@@ -328,10 +328,12 @@ pathtrace_match_set(struct tcb *tcp, struct path_set *set)
                if (nfds == 0 || end < start)
                        return false;
 
-               for (cur = start; cur < end; cur += sizeof(fds))
-                       if ((umove(tcp, cur, &fds) == 0)
-                           && fdmatch(tcp, fds.fd, set))
+               for (cur = start; cur < end; cur += sizeof(fds)) {
+                       if (umove(tcp, cur, &fds))
+                               break;
+                       if (fdmatch(tcp, fds.fd, set))
                                return true;
+               }
 
                return false;
        }