summaryrefslogtreecommitdiffstats
path: root/contrib/less/charset.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2007-10-12 19:03:03 +0000
committerdelphij <delphij@FreeBSD.org>2007-10-12 19:03:03 +0000
commit9680b7d49a594123cfffb2bc9d11614d1a2625d0 (patch)
tree191c869731231c4166826ca194cd1ffb8c2add02 /contrib/less/charset.c
parentaa9fcd738666aeeba852b8c048517501f6704bc0 (diff)
downloadFreeBSD-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.c12
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
{
OpenPOWER on IntegriCloud