commit 91d126eabe33630163d15f9bb423ca95f95333f4
Author:     Jan Klemkow <[email protected]>
AuthorDate: Tue Apr 14 22:40:50 2020 +0200
Commit:     Jan Klemkow <[email protected]>
CommitDate: Tue Apr 14 22:40:50 2020 +0200

    fix strncmp bug by using strcmp
    
    if input is just a single ESC character, strncmp
    just compares the first char of the constant string.

diff --git a/scroll.c b/scroll.c
index c999971..10a04a2 100644
--- a/scroll.c
+++ b/scroll.c
@@ -506,18 +506,20 @@ main(int argc, char *argv[])
                }
  out:
                if (pfd[1].revents & POLLIN) {
-                       ssize_t n = read(mfd, input, sizeof input);
+                       ssize_t n = read(mfd, input, sizeof(input)-1);
 
                        if (n == -1 && errno != EINTR)
                                die("read:");
                        if (n == 0)     /* on exit of child we continue here */
                                continue; /* let signal handler catch SIGCHLD */
 
+                       input[n] = '\0';
+
                        if (write(STDOUT_FILENO, input, n) == -1)
                                die("write:");
 
                        /* don't save clear screen esc sequences in log */
-                       if (strncmp("\033[H\033[2J", input, n) == 0)
+                       if (strcmp("\033[H\033[2J", input) == 0)
                                continue;
 
                        /* iterate over the input buffer */

Reply via email to