Fix index out of bounds in r_cons_grep

This commit is contained in:
pancake 2012-08-08 10:56:25 +02:00
parent 9a1a2fc981
commit ca624cd8cd
2 changed files with 8 additions and 8 deletions

View File

@ -6,9 +6,12 @@
R_API void r_cons_grep(const char *str) { R_API void r_cons_grep(const char *str) {
int len; int len;
RCons *cons; RCons *cons;
char buf[1024]; char buf[4096];
char *ptr, *optr, *ptr2, *ptr3; char *ptr, *optr, *ptr2, *ptr3;
if (!str || !*str)
return;
cons = r_cons_singleton (); cons = r_cons_singleton ();
cons->grep.str = NULL; cons->grep.str = NULL;
cons->grep.neg = 0; cons->grep.neg = 0;
@ -20,9 +23,6 @@ R_API void r_cons_grep(const char *str) {
cons->grep.line = -1; cons->grep.line = -1;
cons->grep.counter = cons->grep.neg = 0; cons->grep.counter = cons->grep.neg = 0;
if (str == NULL || !*str)
return;
if (*str == '^') { // neg if (*str == '^') { // neg
cons->grep.begin = 1; cons->grep.begin = 1;
str++; str++;
@ -36,9 +36,10 @@ R_API void r_cons_grep(const char *str) {
str++; str++;
} }
len = strlen (str)-1; len = strlen (str)-1;
if (str[len] == '?') { if (len>0 && str[len] == '?') {
cons->grep.counter = 1; cons->grep.counter = 1;
strncpy (buf, str, len); strncpy (buf, str, R_MIN (len, sizeof (buf)-1));
buf[len]=0;
len--; len--;
} else strncpy (buf, str, sizeof (buf)-1); } else strncpy (buf, str, sizeof (buf)-1);

View File

@ -725,8 +725,7 @@ static int r_core_cmd_subst_i(RCore *core, char *cmd) {
return ret; return ret;
} }
ret = r_cmd_call (core->cmd, r_str_trim_head (cmd)); return cmd? r_cmd_call (core->cmd, r_str_trim_head (cmd)): R_FALSE;
return ret;
} }
R_API int r_core_cmd_foreach(RCore *core, const char *cmd, char *each) { R_API int r_core_cmd_foreach(RCore *core, const char *cmd, char *each) {