aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTatsuya Kinoshita <tats@debian.org>2016-12-17 15:20:15 +0000
committerTatsuya Kinoshita <tats@debian.org>2016-12-17 15:20:15 +0000
commit5d665be8112a50f34fd1a0db62d81d52b2bc54e0 (patch)
tree57f19770590a6a86822deef2bd1d9141f66d9238
parentRevert "Prevent overflow beyond the end of string in form_update_line()" (diff)
downloadw3m-5d665be8112a50f34fd1a0db62d81d52b2bc54e0.tar.gz
w3m-5d665be8112a50f34fd1a0db62d81d52b2bc54e0.zip
Revert "Prevent overflow beyond the end of string in form_update_line()"
This reverts commit 9ccaa1dd0dac6f9b35a649ae9901c225421500f6.
-rw-r--r--form.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/form.c b/form.c
index 34dc235..17fdabb 100644
--- a/form.c
+++ b/form.c
@@ -278,10 +278,10 @@ form_update_line(Line *line, char **str, int spos, int epos, int width,
int newline, int password)
{
int c_len = 1, c_width = 1, w, i, len, pos;
- char *p, *buf, *q = *str + strlen(*str);
+ char *p, *buf;
Lineprop c_type, effect, *prop;
- for (p = *str, w = 0, pos = 0; p < q && w < width;) {
+ for (p = *str, w = 0, pos = 0; *p && w < width;) {
c_type = get_mctype((unsigned char *)p);
#ifdef USE_M17N
c_len = get_mclen(p);
@@ -326,7 +326,7 @@ form_update_line(Line *line, char **str, int spos, int epos, int width,
bcopy((void *)line->propBuf, (void *)prop, spos * sizeof(Lineprop));
effect = CharEffect(line->propBuf[spos]);
- for (p = *str, w = 0, pos = spos; p < q && w < width;) {
+ for (p = *str, w = 0, pos = spos; *p && w < width;) {
c_type = get_mctype((unsigned char *)p);
#ifdef USE_M17N
c_len = get_mclen(p);
@@ -347,7 +347,7 @@ form_update_line(Line *line, char **str, int spos, int epos, int width,
if (w + c_width > width)
break;
#endif
- for (i = 0; pos < len && i < c_width; i++) {
+ for (i = 0; i < c_width; i++) {
buf[pos] = '*';
prop[pos] = effect | PC_ASCII;
pos++;
@@ -373,7 +373,7 @@ form_update_line(Line *line, char **str, int spos, int epos, int width,
pos++;
#ifdef USE_M17N
c_type = (c_type & ~PC_WCHAR1) | PC_WCHAR2;
- for (i = 1; pos < len && p + i < q && i < c_len; i++) {
+ for (i = 1; i < c_len; i++) {
buf[pos] = p[i];
prop[pos] = effect | c_type;
pos++;
@@ -383,7 +383,7 @@ form_update_line(Line *line, char **str, int spos, int epos, int width,
}
p += c_len;
}
- for (; pos < len && w < width; w++) {
+ for (; w < width; w++) {
buf[pos] = ' ';
prop[pos] = effect | PC_ASCII;
pos++;
@@ -398,8 +398,6 @@ form_update_line(Line *line, char **str, int spos, int epos, int width,
if (*p == '\n')
p++;
}
- if (p > q)
- p = q;
*str = p;
bcopy((void *)&line->lineBuf[epos], (void *)&buf[pos],