[PATCH xserver] kdrive/UnregisterFd: Fix off by one

Egbert Eich eich at freedesktop.org
Tue Nov 24 08:37:36 PST 2015


From: Egbert Eich <eich at suse.de>

The number of FDs has been decremented already, therefore the
number contained the index of the top one that is to me moved down.

This problem was introduced by:
  commit 1110b71e360195aab040d835b54540ab558638c5
  Author: Chris Clayton <chris2553 at googlemail.com>

    kdrive: fix build error on gcc 4.8 for out-of-bounds array access

The reason for the warning was likely a confused compiler.
Hoping to reduce the confusion by moving the decrement behind the end
if the copy loop.

Signed-off-by: Egbert Eich <eich at suse.de>
---
 hw/kdrive/src/kinput.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index 4bb9315..d5741f1 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -220,9 +220,9 @@ KdUnregisterFd(void *closure, int fd, Bool do_close)
                 KdRemoveFd(kdInputFds[i].fd);
             if (do_close)
                 close(kdInputFds[i].fd);
-            kdNumInputFds--;
             for (j = i; j < (kdNumInputFds - 1); j++)
                 kdInputFds[j] = kdInputFds[j + 1];
+            kdNumInputFds--;
             break;
         }
     }
-- 
2.5.3



More information about the xorg-devel mailing list