=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/input.c,v retrieving revision 1.133 retrieving revision 1.134 diff -c -r1.133 -r1.134 *** src/usr.bin/tmux/input.c 2018/04/06 09:09:38 1.133 --- src/usr.bin/tmux/input.c 2018/04/10 11:20:15 1.134 *************** *** 1,4 **** ! /* $OpenBSD: input.c,v 1.133 2018/04/06 09:09:38 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: input.c,v 1.134 2018/04/10 11:20:15 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 1845,1854 **** ptr = copy = xstrdup(s); while ((out = strsep(&ptr, ":")) != NULL) { ! p[n++] = strtonum(out, 0, INT_MAX, &errstr); ! if (errstr != NULL || n == nitems(p)) { ! free(copy); ! return; } log_debug("%s: %u = %d", __func__, n - 1, p[n - 1]); } --- 1845,1856 ---- ptr = copy = xstrdup(s); while ((out = strsep(&ptr, ":")) != NULL) { ! if (*out != '\0') { ! p[n++] = strtonum(out, 0, INT_MAX, &errstr); ! if (errstr != NULL || n == nitems(p)) { ! free(copy); ! return; ! } } log_debug("%s: %u = %d", __func__, n - 1, p[n - 1]); } *************** *** 1856,1871 **** if (n == 0 || (p[0] != 38 && p[0] != 48)) return; ! switch (p[1]) { case 2: ! if (n != 5) break; ! input_csi_dispatch_sgr_rgb_do(ictx, p[0], p[2], p[3], p[4]); break; case 5: ! if (n != 3) break; ! input_csi_dispatch_sgr_256_do(ictx, p[0], p[2]); break; } } --- 1858,1878 ---- if (n == 0 || (p[0] != 38 && p[0] != 48)) return; ! if (p[1] == -1) ! i = 2; ! else ! i = 1; ! switch (p[i]) { case 2: ! if (n < i + 4) break; ! input_csi_dispatch_sgr_rgb_do(ictx, p[0], p[i + 1], p[i + 2], ! p[i + 3]); break; case 5: ! if (n < i + 2) break; ! input_csi_dispatch_sgr_256_do(ictx, p[0], p[i + 1]); break; } }