Verifica limites de token antes de alocar memória.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Sun, 13 Mar 2016 11:54:50 +0000 (08:54 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Sun, 13 Mar 2016 11:54:50 +0000 (08:54 -0300)
Caso não exista mais tokens, não é necessário alocar mais memória.

lib/token.c

index 50b82de..da2b8bc 100644 (file)
@@ -86,6 +86,9 @@ char ** tokens_new(char *line)
        int i;
        end = line;
        do {
+               start = token_next(end, &end);
+               if (start == end)
+                       break;
                if (next <= alloc) {
                        char **nargs;
                        alloc += inc;
@@ -101,9 +104,6 @@ char ** tokens_new(char *line)
                                nargs[i] = NULL;
                        args = nargs;
                }
-               start = token_next(end, &end);
-               if (start == end)
-                       break;
                if (*start == '"') {
                        args[next] = token_unescape(start, end - 1);
                } else {