diff options
author | delphij <delphij@FreeBSD.org> | 2007-10-12 19:03:03 +0000 |
---|---|---|
committer | delphij <delphij@FreeBSD.org> | 2007-10-12 19:03:03 +0000 |
commit | 9680b7d49a594123cfffb2bc9d11614d1a2625d0 (patch) | |
tree | 191c869731231c4166826ca194cd1ffb8c2add02 /contrib/less/charset.c | |
parent | aa9fcd738666aeeba852b8c048517501f6704bc0 (diff) | |
download | FreeBSD-src-9680b7d49a594123cfffb2bc9d11614d1a2625d0.zip FreeBSD-src-9680b7d49a594123cfffb2bc9d11614d1a2625d0.tar.gz |
Import less v409, fixes a rather serious bug which causes
crashes when searching for invalid UTF-8 sequence.
Diffstat (limited to 'contrib/less/charset.c')
-rw-r--r-- | contrib/less/charset.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/contrib/less/charset.c b/contrib/less/charset.c index 628218d..37d344d 100644 --- a/contrib/less/charset.c +++ b/contrib/less/charset.c @@ -668,6 +668,7 @@ step_char(pp, dir, limit) char *limit; { LWCHAR ch; + int len; char *p = *pp; if (!utf_mode) @@ -679,14 +680,15 @@ step_char(pp, dir, limit) ch = (LWCHAR) ((p > limit) ? *--p : 0); } else if (dir > 0) { - if (p + utf_len(*p) > limit) + len = utf_len(*p); + if (p + len > limit) + { ch = 0; - else + p = limit; + } else { ch = get_wchar(p); - p++; - while (IS_UTF8_TRAIL(*p)) - p++; + p += len; } } else { |