diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-08-03 14:17:21 +0000 |
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-08-03 14:17:21 +0000 |
| commit | 46340e398e93898ce097b06f5e26c86e33fd651a (patch) | |
| tree | 45a657af806c6cb6eed024a17dd4a5444c1c25ea /miscutils | |
| parent | 0e2c9fb4e09fb0c5a47ddc74b0ba53238570599e (diff) | |
| download | busybox-w32-46340e398e93898ce097b06f5e26c86e33fd651a.tar.gz busybox-w32-46340e398e93898ce097b06f5e26c86e33fd651a.tar.bz2 busybox-w32-46340e398e93898ce097b06f5e26c86e33fd651a.zip | |
less: add a bit more robustness in keyboard reading code
Diffstat (limited to 'miscutils')
| -rw-r--r-- | miscutils/less.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/miscutils/less.c b/miscutils/less.c index 9b2c43bd5..a6649c5ca 100644 --- a/miscutils/less.c +++ b/miscutils/less.c | |||
| @@ -699,10 +699,11 @@ static int less_getch(void) | |||
| 699 | char input[16]; | 699 | char input[16]; |
| 700 | unsigned i; | 700 | unsigned i; |
| 701 | again: | 701 | again: |
| 702 | memset(input, 0, sizeof(input)); | ||
| 702 | getch_nowait(input, sizeof(input)); | 703 | getch_nowait(input, sizeof(input)); |
| 704 | |||
| 703 | /* Detect escape sequences (i.e. arrow keys) and handle | 705 | /* Detect escape sequences (i.e. arrow keys) and handle |
| 704 | * them accordingly */ | 706 | * them accordingly */ |
| 705 | |||
| 706 | if (input[0] == '\033' && input[1] == '[') { | 707 | if (input[0] == '\033' && input[1] == '[') { |
| 707 | set_tty_cooked(); | 708 | set_tty_cooked(); |
| 708 | i = input[2] - REAL_KEY_UP; | 709 | i = input[2] - REAL_KEY_UP; |
| @@ -740,6 +741,7 @@ static char* less_gets(int sz) | |||
| 740 | * but it is needed. Is it because of stdio? */ | 741 | * but it is needed. Is it because of stdio? */ |
| 741 | tcsetattr(kbd_fd, TCSANOW, &term_less); | 742 | tcsetattr(kbd_fd, TCSANOW, &term_less); |
| 742 | 743 | ||
| 744 | c = '\0'; | ||
| 743 | read(kbd_fd, &c, 1); | 745 | read(kbd_fd, &c, 1); |
| 744 | if (c == 0x0d) | 746 | if (c == 0x0d) |
| 745 | return result; | 747 | return result; |
