fix possible overflow
3a60b195
1 file(s) · +4 −4
| 31 | 31 | static void insert(const char *str, ssize_t n); |
|
| 32 | 32 | static void keypress(XKeyEvent *ev); |
|
| 33 | 33 | static void match(Bool sub); |
|
| 34 | - | static size_t nextrune(int incr); |
|
| 34 | + | static size_t nextrune(int inc); |
|
| 35 | 35 | static void paste(void); |
|
| 36 | 36 | static void readstdin(void); |
|
| 37 | 37 | static void run(void); |
|
| 426 | 426 | } |
|
| 427 | 427 | ||
| 428 | 428 | size_t |
|
| 429 | - | nextrune(int incr) { |
|
| 430 | - | size_t n, len = strlen(text); |
|
| 429 | + | nextrune(int inc) { |
|
| 430 | + | ssize_t n; |
|
| 431 | 431 | ||
| 432 | - | for(n = cursor + incr; n < len && (text[n] & 0xc0) == 0x80; n += incr); |
|
| 432 | + | for(n = cursor + inc; n + inc >= 0 && (text[n] & 0xc0) == 0x80; n += inc); |
|
| 433 | 433 | return n; |
|
| 434 | 434 | } |
|
| 435 | 435 | ||