mirror of https://github.com/xzeldon/htop.git
Do not trust isalpha(c) for values > 255.
Fixes #174. Conflicts: Panel.c
This commit is contained in:
parent
ade7993fcb
commit
54f8d8154b
|
@ -54,7 +54,7 @@ static HandlerResult AvailableColumnsPanel_eventHandler(Panel* super, int ch) {
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
if (isalpha(ch))
|
if (ch < 255 && isalpha(ch))
|
||||||
result = Panel_selectByTyping(super, ch);
|
result = Panel_selectByTyping(super, ch);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,7 +97,7 @@ static HandlerResult CategoriesPanel_eventHandler(Panel* super, int ch) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
if (isalpha(ch))
|
if (ch < 255 && isalpha(ch))
|
||||||
result = Panel_selectByTyping(super, ch);
|
result = Panel_selectByTyping(super, ch);
|
||||||
if (result == BREAK_LOOP)
|
if (result == BREAK_LOOP)
|
||||||
result = IGNORED;
|
result = IGNORED;
|
||||||
|
|
|
@ -100,7 +100,7 @@ static HandlerResult ColumnsPanel_eventHandler(Panel* super, int ch) {
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
if (isalpha(ch))
|
if (ch < 255 && isalpha(ch))
|
||||||
result = Panel_selectByTyping(super, ch);
|
result = Panel_selectByTyping(super, ch);
|
||||||
if (result == BREAK_LOOP)
|
if (result == BREAK_LOOP)
|
||||||
result = IGNORED;
|
result = IGNORED;
|
||||||
|
|
2
IncSet.c
2
IncSet.c
|
@ -151,7 +151,7 @@ bool IncSet_handleKey(IncSet* this, int ch, Panel* panel, IncMode_GetPanelValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
doSearch = false;
|
doSearch = false;
|
||||||
} else if (isprint((char)ch) && (mode->index < INCMODE_MAX)) {
|
} else if (ch < 255 && isprint((char)ch) && (mode->index < INCMODE_MAX)) {
|
||||||
mode->buffer[mode->index] = ch;
|
mode->buffer[mode->index] = ch;
|
||||||
mode->index++;
|
mode->index++;
|
||||||
mode->buffer[mode->index] = 0;
|
mode->buffer[mode->index] = 0;
|
||||||
|
|
2
Panel.c
2
Panel.c
|
@ -431,7 +431,7 @@ HandlerResult Panel_selectByTyping(Panel* this, int ch) {
|
||||||
this->eventHandlerState = calloc(100, 1);
|
this->eventHandlerState = calloc(100, 1);
|
||||||
char* buffer = this->eventHandlerState;
|
char* buffer = this->eventHandlerState;
|
||||||
|
|
||||||
if (isalnum(ch)) {
|
if (ch < 255 && isalnum(ch)) {
|
||||||
int len = strlen(buffer);
|
int len = strlen(buffer);
|
||||||
if (len < 99) {
|
if (len < 99) {
|
||||||
buffer[len] = ch;
|
buffer[len] = ch;
|
||||||
|
|
|
@ -128,7 +128,7 @@ static inline void RichString_writeFrom(RichString* this, int attrs, const char*
|
||||||
int newLen = from + len;
|
int newLen = from + len;
|
||||||
RichString_setLen(this, newLen);
|
RichString_setLen(this, newLen);
|
||||||
for (int i = from, j = 0; i < newLen; i++, j++)
|
for (int i = from, j = 0; i < newLen; i++, j++)
|
||||||
this->chptr[i] = (isprint(data_c[j]) ? data_c[j] : '?') | attrs;
|
this->chptr[i] = (data_c[j] >= 32 ? data_c[j] : '?') | attrs;
|
||||||
this->chptr[newLen] = 0;
|
this->chptr[newLen] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
htop.c
2
htop.c
|
@ -381,7 +381,7 @@ int main(int argc, char** argv) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isdigit((char)ch)) {
|
if (ch < 255 && isdigit((char)ch)) {
|
||||||
if (Panel_size(panel) == 0) continue;
|
if (Panel_size(panel) == 0) continue;
|
||||||
pid_t pid = ch-48 + acc;
|
pid_t pid = ch-48 + acc;
|
||||||
for (int i = 0; i < ProcessList_size(pl); i++) {
|
for (int i = 0; i < ProcessList_size(pl); i++) {
|
||||||
|
|
Loading…
Reference in New Issue