diff options
| author | Tatsuya Kinoshita <tats@debian.org> | 2016-12-07 12:14:07 +0000 | 
|---|---|---|
| committer | Tatsuya Kinoshita <tats@debian.org> | 2016-12-07 12:24:44 +0000 | 
| commit | 512ed467d12615f5ef40d0d28272e5662d8438ea (patch) | |
| tree | e492027cac055b5dfce919356ed8d51ed3de5bc7 | |
| parent | Prevent overflow beyond the end of string in wtf_strwidth() (diff) | |
| download | w3m-512ed467d12615f5ef40d0d28272e5662d8438ea.tar.gz w3m-512ed467d12615f5ef40d0d28272e5662d8438ea.zip | |
Prevent overflow beyond the end of string in proc_mchar()
Bug-Debian: https://github.com/tats/w3m/issues/59
| -rw-r--r-- | file.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| @@ -2599,6 +2599,8 @@ static void  proc_mchar(struct readbuffer *obuf, int pre_mode,  	   int width, char **str, Lineprop mode)  { +    size_t len; +      check_breakpoint(obuf, pre_mode, *str);      obuf->pos += width;      Strcat_charp_n(obuf->line, *str, get_mclen(*str)); @@ -2607,7 +2609,10 @@ proc_mchar(struct readbuffer *obuf, int pre_mode,  	if (**str != ' ')  	    obuf->prev_ctype = mode;      } -    (*str) += get_mclen(*str); +    len = get_mclen(*str); +    if (len > strlen(*str)) +	len = strlen(*str); +    (*str) += len;      obuf->flag |= RB_NFLUSHED;  } | 
