Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/bin/ksh PR/50747: David Binderman: check bounds before deref...



details:   https://anonhg.NetBSD.org/src/rev/5df368fb417a
branches:  trunk
changeset: 343423:5df368fb417a
user:      christos <christos%NetBSD.org@localhost>
date:      Wed Feb 03 05:26:16 2016 +0000

description:
PR/50747: David Binderman: check bounds before dereference.
While here add some continues before semicolons.

diffstat:

 bin/ksh/vi.c |  53 ++++++++++++++++++++++++++++-------------------------
 1 files changed, 28 insertions(+), 25 deletions(-)

diffs (144 lines):

diff -r 5ecc435bd1e3 -r 5df368fb417a bin/ksh/vi.c
--- a/bin/ksh/vi.c      Wed Feb 03 05:18:58 2016 +0000
+++ b/bin/ksh/vi.c      Wed Feb 03 05:26:16 2016 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: vi.c,v 1.12 2011/06/22 03:56:17 mrg Exp $      */
+/*     $NetBSD: vi.c,v 1.13 2016/02/03 05:26:16 christos Exp $ */
 
 /*
  *     vi command editing
@@ -9,7 +9,7 @@
 #include <sys/cdefs.h>
 
 #ifndef lint
-__RCSID("$NetBSD: vi.c,v 1.12 2011/06/22 03:56:17 mrg Exp $");
+__RCSID("$NetBSD: vi.c,v 1.13 2016/02/03 05:26:16 christos Exp $");
 #endif
 
 #include "config.h"
@@ -835,7 +835,7 @@
                                                (cmd[1]=='w' || cmd[1]=='W') &&
                                                !isspace((unsigned char)es->cbuf[es->cursor])) {
                                        while (isspace((unsigned char)es->cbuf[--ncursor]))
-                                               ;
+                                               continue;
                                        ncursor++;
                                }
                                if (ncursor > es->cursor) {
@@ -865,7 +865,7 @@
                        if (es->linelen != 0)
                                es->cursor++;
                        while (putbuf(ybuf, yanklen, 0) == 0 && --argcnt > 0)
-                               ;
+                               continue;
                        if (es->cursor != 0)
                                es->cursor--;
                        if (argcnt != 0)
@@ -1572,15 +1572,16 @@
        ncursor = es->cursor;
        while (ncursor < es->linelen && argcnt--) {
                if (is_wordch(es->cbuf[ncursor]))
-                       while (is_wordch(es->cbuf[ncursor]) &&
-                                       ncursor < es->linelen)
+                       while (ncursor < es->linelen &&
+                           is_wordch(es->cbuf[ncursor]))
                                ncursor++;
                else if (!isspace((unsigned char)es->cbuf[ncursor]))
-                       while (!is_wordch(es->cbuf[ncursor]) &&
-                                       !isspace((unsigned char)es->cbuf[ncursor]) &&
-                                       ncursor < es->linelen)
+                       while (ncursor < es->linelen &&
+                           !is_wordch(es->cbuf[ncursor]) &&
+                           !isspace((unsigned char)es->cbuf[ncursor]))
                                ncursor++;
-               while (isspace((unsigned char)es->cbuf[ncursor]) && ncursor < es->linelen)
+               while (ncursor < es->linelen &&
+                   isspace((unsigned char)es->cbuf[ncursor]))
                        ncursor++;
        }
        return ncursor;
@@ -1595,17 +1596,17 @@
        ncursor = es->cursor;
        while (ncursor > 0 && argcnt--) {
                while (--ncursor > 0 && isspace((unsigned char)es->cbuf[ncursor]))
-                       ;
+                       continue;
                if (ncursor > 0) {
                        if (is_wordch(es->cbuf[ncursor]))
                                while (--ncursor >= 0 &&
                                   is_wordch(es->cbuf[ncursor]))
-                                       ;
+                                       continue;
                        else
                                while (--ncursor >= 0 &&
                                   !is_wordch(es->cbuf[ncursor]) &&
                                   !isspace((unsigned char)es->cbuf[ncursor]))
-                                       ;
+                                       continue;
                        ncursor++;
                }
        }
@@ -1621,18 +1622,18 @@
        ncursor = es->cursor;
        while (ncursor < es->linelen && argcnt--) {
                while (++ncursor < es->linelen - 1 &&
-                               isspace((unsigned char)es->cbuf[ncursor]))
-                       ;
+                   isspace((unsigned char)es->cbuf[ncursor]))
+                       continue;
                if (ncursor < es->linelen - 1) {
                        if (is_wordch(es->cbuf[ncursor]))
                                while (++ncursor < es->linelen &&
-                                         is_wordch(es->cbuf[ncursor]))
-                                       ;
+                                   is_wordch(es->cbuf[ncursor]))
+                                       continue;
                        else
                                while (++ncursor < es->linelen &&
                                   !is_wordch(es->cbuf[ncursor]) &&
                                   !isspace((unsigned char)es->cbuf[ncursor]))
-                                       ;
+                                       continue;
                        ncursor--;
                }
        }
@@ -1647,9 +1648,11 @@
 
        ncursor = es->cursor;
        while (ncursor < es->linelen && argcnt--) {
-               while (!isspace((unsigned char)es->cbuf[ncursor]) && ncursor < es->linelen)
+               while (ncursor < es->linelen &&
+                   !isspace((unsigned char)es->cbuf[ncursor]))
                        ncursor++;
-               while (isspace((unsigned char)es->cbuf[ncursor]) && ncursor < es->linelen)
+               while (ncursor < es->linelen &&
+                   isspace((unsigned char)es->cbuf[ncursor]))
                        ncursor++;
        }
        return ncursor;
@@ -1664,7 +1667,7 @@
        ncursor = es->cursor;
        while (ncursor > 0 && argcnt--) {
                while (--ncursor >= 0 && isspace((unsigned char)es->cbuf[ncursor]))
-                       ;
+                       continue;
                while (ncursor >= 0 && !isspace((unsigned char)es->cbuf[ncursor]))
                        ncursor--;
                ncursor++;
@@ -1681,12 +1684,12 @@
        ncursor = es->cursor;
        while (ncursor < es->linelen - 1 && argcnt--) {
                while (++ncursor < es->linelen - 1 &&
-                               isspace((unsigned char)es->cbuf[ncursor]))
-                       ;
+                   isspace((unsigned char)es->cbuf[ncursor]))
+                       continue;
                if (ncursor < es->linelen - 1) {
                        while (++ncursor < es->linelen &&
-                                       !isspace((unsigned char)es->cbuf[ncursor]))
-                               ;
+                           !isspace((unsigned char)es->cbuf[ncursor]))
+                               continue;
                        ncursor--;
                }
        }



Home | Main Index | Thread Index | Old Index