]> sourceware.org Git - newlib-cygwin.git/commitdiff
Cygwin: pty: Check response for CSI6n more strictly.
authorTakashi Yano via Cygwin-patches <cygwin-patches@cygwin.com>
Wed, 16 Dec 2020 09:10:15 +0000 (18:10 +0900)
committerCorinna Vinschen <corinna@vinschen.de>
Wed, 16 Dec 2020 09:31:09 +0000 (10:31 +0100)
- Previous code to read response for CSI6n allows invalid response
  such as "CSI Pl; Pc H" other than correct response "CSI Pl; Pc R".
  With this patch, the response is checked more strictly.

winsup/cygwin/fhandler_tty.cc

index 5f38ca8d3435ebd0e3e7fbf30ab76c4bdb338cf4..77d9d9b471dad63bf0120732fb56519cbc017fcb 100644 (file)
@@ -2682,7 +2682,9 @@ fhandler_pty_slave::term_has_pcon_cap (const WCHAR *env)
          len -= n;
          *p = '\0';
          char *p1 = strrchr (buf, '\033');
-         if (p1 == NULL || sscanf (p1, "\033[%d;%dR", &y1, &x1) != 2)
+         char c;
+         if (p1 == NULL || sscanf (p1, "\033[%d;%d%c", &y1, &x1, &c) != 3
+             || c != 'R')
            continue;
          wait_cnt = 0;
          break;
@@ -2715,7 +2717,9 @@ fhandler_pty_slave::term_has_pcon_cap (const WCHAR *env)
       len -= n;
       *p = '\0';
       char *p2 = strrchr (buf, '\033');
-      if (p2 == NULL || sscanf (p2, "\033[%d;%dR", &y2, &x2) != 2)
+      char c;
+      if (p2 == NULL || sscanf (p2, "\033[%d;%d%c", &y2, &x2, &c) != 3
+         || c != 'R')
        continue;
       break;
     }
This page took 0.037163 seconds and 5 git commands to generate.