# HG changeset patch # User lost # Date 1231012230 0 # Node ID 7eafdb3a8074880ac2fbf37b45283d4c65638983 # Parent d2cee0c335e7861749d2623e3f6a7860df30406b Fixed symbol parsing to prevent string overflow diff -r d2cee0c335e7 -r 7eafdb3a8074 src/expr.c --- a/src/expr.c Sat Jan 03 19:41:39 2009 +0000 +++ b/src/expr.c Sat Jan 03 19:50:30 2009 +0000 @@ -390,8 +390,8 @@ char *sb; // evaluate a symbol here - static const char *symchars = "_.$@\\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - while (strchr(symchars, (*p)[l])) + static const char *symchars = "_.$@?abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + while ((*p)[l] && strchr(symchars, (*p)[l])) l++; if (l == 0) @@ -403,8 +403,9 @@ t = lwasm_expr_term_create_sym(sb); lwasm_expr_stack_push(s, t); lwasm_expr_term_free(t); + (*p) += l; + debug_message(3, "Symbol: '%s'; (%s)", sb, *p); lwasm_free(sb); - (*p) += l; return 0; }