Fix double free in %depend
authorH. Peter Anvin <hpa@zytor.com>
Wed, 4 Jun 2008 22:11:23 +0000 (15:11 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Wed, 4 Jun 2008 22:11:23 +0000 (15:11 -0700)
preproc.c

index 4052672..475cb7e 100644 (file)
--- a/preproc.c
+++ b/preproc.c
@@ -1840,7 +1840,7 @@ static int do_directive(Token * tline)
     origline = tline;
 
     skip_white_(tline);
-    if (!tok_type_(tline, TOK_PREPROC_ID) ||
+    if (!tline || !tok_type_(tline, TOK_PREPROC_ID) ||
         (tline->text[1] == '%' || tline->text[1] == '$'
          || tline->text[1] == '!'))
         return NO_DIRECTIVE_FOUND;
@@ -2093,7 +2093,6 @@ static int do_directive(Token * tline)
         if (!t || (t->type != TOK_STRING &&
                        t->type != TOK_INTERNAL_STRING)) {
             error(ERR_NONFATAL, "`%%depend' expects a file name");
-           free_tlist(t);
             free_tlist(origline);
             return DIRECTIVE_FOUND;     /* but we did _something_ */
         }
@@ -2110,7 +2109,6 @@ static int do_directive(Token * tline)
            *deptail = sl;
            deptail = &sl->next;
        }
-       free_tlist(t);
        free_tlist(origline);
         return DIRECTIVE_FOUND;