fix segfault due to using isdigit with non unsigned char value. Closes T1625

Also rename _termpty_handle_seq() to termpty_handle_seq() since it's not static.
devs/discomfitor/cc
Boris Faure 8 years ago
parent 2eb2b9646f
commit caed00cc1f
  1. 9
      src/bin/termptyesc.c
  2. 2
      src/bin/termptyesc.h

@ -36,13 +36,13 @@ _csi_arg_get(Eina_Unicode **ptr)
Eina_Unicode *b = *ptr;
int sum = 0;
while ((*b) && (!isdigit(*b))) b++;
while ((*b) && (*b < '0' || *b > '9')) b++;
if (!*b)
{
*ptr = NULL;
return 0;
}
while (isdigit(*b))
while ((*b >= '0') && (*b <= '9'))
{
sum *= 10;
sum += *b - '0';
@ -1050,7 +1050,7 @@ _xterm_arg_get(Eina_Unicode **ptr)
Eina_Unicode *b = *ptr;
int sum = 0;
while (*b && isdigit(*b))
while (*b >= '0' && *b <= '9')
{
sum *= 10;
sum += *b - '0';
@ -1598,8 +1598,9 @@ _handle_esc(Termpty *ty, const Eina_Unicode *c, Eina_Unicode *ce)
return 0;
}
/* XXX: ce is excluded */
int
_termpty_handle_seq(Termpty *ty, Eina_Unicode *c, Eina_Unicode *ce)
termpty_handle_seq(Termpty *ty, Eina_Unicode *c, Eina_Unicode *ce)
{
Eina_Unicode *cc;
int len = 0;

@ -1,6 +1,6 @@
#ifndef _TERMPTY_ESC_H__
#define _TERMPTY_ESC_H__ 1
int _termpty_handle_seq(Termpty *ty, Eina_Unicode *c, Eina_Unicode *ce);
int termpty_handle_seq(Termpty *ty, Eina_Unicode *c, Eina_Unicode *ce);
#endif

Loading…
Cancel
Save