orangeduck / mpc

A Parser Combinator library for C

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

scan coverity findings

trufae opened this issue · comments

I have updated mpc from the @radareorg repository and got some leaks and bugs reported by coverity. So i think is better to report it in here :) hope it helps

** CID 1453141:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 3445 in mpcaf_fold_regex()


________________________________________________________________________________________________________
*** CID 1453141:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 3445 in mpcaf_fold_regex()
3439       int mode = MPC_RE_DEFAULT;
3440     
3441       (void)n;
3442       if (strchr(m, 'm')) { mode |= MPC_RE_MULTILINE; }
3443       if (strchr(m, 's')) { mode |= MPC_RE_DOTALL; }
3444       y = mpcf_unescape_regex(y);
   CID 1453141:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_re_mode(y, mode)" leaks it.
3445       p = (st->flags & MPCA_LANG_WHITESPACE_SENSITIVE) ? mpc_re_mode(y, mode) : mpc_tok(mpc_re_mode(y, mode));
3446       free(y);
3447       free(m);
3448     
3449       return mpca_state(mpca_tag(mpc_apply(p, mpcf_str_ast), "regex"));
3450     }

** CID 1453140:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 3720 in mpca_lang_st()


________________________________________________________________________________________________________
*** CID 1453140:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 3720 in mpca_lang_st()
3714             mpc_sym("!"),
3715             mpc_tok_brackets(mpc_int(), free),
3716             mpc_pass()),
3717         mpc_soft_delete
3718       ));
3719     
   CID 1453140:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_lift_val(st)" leaks it.
3720       mpc_define(Base, mpc_or(5,
3721         mpc_apply_to(mpc_tok(mpc_string_lit()), mpcaf_grammar_string, st),
3722         mpc_apply_to(mpc_tok(mpc_char_lit()),   mpcaf_grammar_char, st),
3723         mpc_tok(mpc_and(3, mpcaf_fold_regex, mpc_regex_lit(), mpc_many(mpcf_strfold, mpc_oneof("ms")), mpc_lift_val(st), free, free)),
3724         mpc_apply_to(mpc_tok_braces(mpc_or(2, mpc_digits(), mpc_ident()), free), mpcaf_grammar_id, st),
3725         mpc_tok_parens(Grammar, mpc_soft_delete)

** CID 1453139:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2387 in mpc_re_mode()


________________________________________________________________________________________________________
*** CID 1453139:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2387 in mpc_re_mode()
2381           mpc_char('*'), mpc_char('+'), mpc_char('?'),
2382           mpc_brackets(mpc_int(), free),
2383           mpc_pass()),
2384         (mpc_dtor_t)mpc_delete
2385       ));
2386     
   CID 1453139:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_squares(Range, (mpc_dtor_t)mpc_delete)" leaks it.
2387       mpc_define(Base, mpc_or(4,
2388         mpc_parens(Regex, (mpc_dtor_t)mpc_delete),
2389         mpc_squares(Range, (mpc_dtor_t)mpc_delete),
2390         mpc_apply_to(mpc_escape(), mpcf_re_escape, &mode),
2391         mpc_apply_to(mpc_noneof(")|"), mpcf_re_escape, &mode)
2392       ));

** CID 1453138:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 3720 in mpca_lang_st()


________________________________________________________________________________________________________
*** CID 1453138:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 3720 in mpca_lang_st()
3714             mpc_sym("!"),
3715             mpc_tok_brackets(mpc_int(), free),
3716             mpc_pass()),
3717         mpc_soft_delete
3718       ));
3719     
   CID 1453138:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_and(3, mpcaf_fold_regex, mpc_regex_lit(), mpc_many(mpcf_strfold, mpc_oneof("ms")), mpc_lift_val(st), free, free)" leaks it.
3720       mpc_define(Base, mpc_or(5,
3721         mpc_apply_to(mpc_tok(mpc_string_lit()), mpcaf_grammar_string, st),
3722         mpc_apply_to(mpc_tok(mpc_char_lit()),   mpcaf_grammar_char, st),
3723         mpc_tok(mpc_and(3, mpcaf_fold_regex, mpc_regex_lit(), mpc_many(mpcf_strfold, mpc_oneof("ms")), mpc_lift_val(st), free, free)),
3724         mpc_apply_to(mpc_tok_braces(mpc_or(2, mpc_digits(), mpc_ident()), free), mpcaf_grammar_id, st),
3725         mpc_tok_parens(Grammar, mpc_soft_delete)

** CID 1453137:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 3558 in mpca_grammar_st()


________________________________________________________________________________________________________
*** CID 1453137:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 3558 in mpca_grammar_st()
3552             mpc_sym("!"),
3553             mpc_tok_brackets(mpc_int(), free),
3554             mpc_pass()),
3555         mpc_soft_delete
3556       ));
3557     
   CID 1453137:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_and(3, mpcaf_fold_regex, mpc_regex_lit(), mpc_many(mpcf_strfold, mpc_oneof("ms")), mpc_lift_val(st), free, free)" leaks it.
3558       mpc_define(Base, mpc_or(5,
3559         mpc_apply_to(mpc_tok(mpc_string_lit()), mpcaf_grammar_string, st),
3560         mpc_apply_to(mpc_tok(mpc_char_lit()),   mpcaf_grammar_char, st),
3561         mpc_tok(mpc_and(3, mpcaf_fold_regex, mpc_regex_lit(), mpc_many(mpcf_strfold, mpc_oneof("ms")), mpc_lift_val(st), free, free)),
3562         mpc_apply_to(mpc_tok_braces(mpc_or(2, mpc_digits(), mpc_ident()), free), mpcaf_grammar_id, st),
3563         mpc_tok_parens(Grammar, mpc_soft_delete)

** CID 1453136:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2399 in mpc_re_mode()


________________________________________________________________________________________________________
*** CID 1453136:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2399 in mpc_re_mode()
2393     
2394       mpc_define(Range, mpc_apply(
2395         mpc_many(mpcf_strfold, mpc_or(2, mpc_escape(), mpc_noneof("]"))),
2396         mpcf_re_range
2397       ));
2398     
   CID 1453136:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_predictive(Regex)" leaks it.
2399       RegexEnclose = mpc_whole(mpc_predictive(Regex), (mpc_dtor_t)mpc_delete);
2400     
2401       mpc_optimise(RegexEnclose);
2402       mpc_optimise(Regex);
2403       mpc_optimise(Term);
2404       mpc_optimise(Factor);

** CID 1453135:    (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2387 in mpc_re_mode()
/shlr/mpc/mpc.c: 2387 in mpc_re_mode()


________________________________________________________________________________________________________
*** CID 1453135:    (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2387 in mpc_re_mode()
2381           mpc_char('*'), mpc_char('+'), mpc_char('?'),
2382           mpc_brackets(mpc_int(), free),
2383           mpc_pass()),
2384         (mpc_dtor_t)mpc_delete
2385       ));
2386     
   CID 1453135:    (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_apply_to(mpc_escape(), mpcf_re_escape, &mode)" leaks it.
2387       mpc_define(Base, mpc_or(4,
2388         mpc_parens(Regex, (mpc_dtor_t)mpc_delete),
2389         mpc_squares(Range, (mpc_dtor_t)mpc_delete),
2390         mpc_apply_to(mpc_escape(), mpcf_re_escape, &mode),
2391         mpc_apply_to(mpc_noneof(")|"), mpcf_re_escape, &mode)
2392       ));
/shlr/mpc/mpc.c: 2387 in mpc_re_mode()
2381           mpc_char('*'), mpc_char('+'), mpc_char('?'),
2382           mpc_brackets(mpc_int(), free),
2383           mpc_pass()),
2384         (mpc_dtor_t)mpc_delete
2385       ));
2386     
   CID 1453135:    (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_apply_to(mpc_noneof(")|"), mpcf_re_escape, &mode)" leaks it.
2387       mpc_define(Base, mpc_or(4,
2388         mpc_parens(Regex, (mpc_dtor_t)mpc_delete),
2389         mpc_squares(Range, (mpc_dtor_t)mpc_delete),
2390         mpc_apply_to(mpc_escape(), mpcf_re_escape, &mode),
2391         mpc_apply_to(mpc_noneof(")|"), mpcf_re_escape, &mode)
2392       ));

** CID 1453134:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 3720 in mpca_lang_st()


________________________________________________________________________________________________________
*** CID 1453134:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 3720 in mpca_lang_st()
3714             mpc_sym("!"),
3715             mpc_tok_brackets(mpc_int(), free),
3716             mpc_pass()),
3717         mpc_soft_delete
3718       ));
3719     
   CID 1453134:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_many(mpcf_strfold, mpc_oneof("ms"))" leaks it.
3720       mpc_define(Base, mpc_or(5,
3721         mpc_apply_to(mpc_tok(mpc_string_lit()), mpcaf_grammar_string, st),
3722         mpc_apply_to(mpc_tok(mpc_char_lit()),   mpcaf_grammar_char, st),
3723         mpc_tok(mpc_and(3, mpcaf_fold_regex, mpc_regex_lit(), mpc_many(mpcf_strfold, mpc_oneof("ms")), mpc_lift_val(st), free, free)),
3724         mpc_apply_to(mpc_tok_braces(mpc_or(2, mpc_digits(), mpc_ident()), free), mpcaf_grammar_id, st),
3725         mpc_tok_parens(Grammar, mpc_soft_delete)

** CID 1453133:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2387 in mpc_re_mode()


________________________________________________________________________________________________________
*** CID 1453133:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2387 in mpc_re_mode()
2381           mpc_char('*'), mpc_char('+'), mpc_char('?'),
2382           mpc_brackets(mpc_int(), free),
2383           mpc_pass()),
2384         (mpc_dtor_t)mpc_delete
2385       ));
2386     
   CID 1453133:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_parens(Regex, (mpc_dtor_t)mpc_delete)" leaks it.
2387       mpc_define(Base, mpc_or(4,
2388         mpc_parens(Regex, (mpc_dtor_t)mpc_delete),
2389         mpc_squares(Range, (mpc_dtor_t)mpc_delete),
2390         mpc_apply_to(mpc_escape(), mpcf_re_escape, &mode),
2391         mpc_apply_to(mpc_noneof(")|"), mpcf_re_escape, &mode)
2392       ));

** CID 1453132:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2378 in mpc_re_mode()


________________________________________________________________________________________________________
*** CID 1453132:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2378 in mpc_re_mode()
2372         mpc_maybe(mpc_and(2, mpcf_snd_free, mpc_char('|'), Regex, free)),
2373         (mpc_dtor_t)mpc_delete
2374       ));
2375     
2376       mpc_define(Term, mpc_many(mpcf_re_and, Factor));
2377     
   CID 1453132:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_or(5, mpc_char('*'), mpc_char('+'), mpc_char('?'), mpc_brackets(mpc_int(), free), mpc_pass())" leaks it.
2378       mpc_define(Factor, mpc_and(2, mpcf_re_repeat,
2379         Base,
2380         mpc_or(5,
2381           mpc_char('*'), mpc_char('+'), mpc_char('?'),
2382           mpc_brackets(mpc_int(), free),
2383           mpc_pass()),

** CID 1453131:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2394 in mpc_re_mode()


________________________________________________________________________________________________________
*** CID 1453131:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2394 in mpc_re_mode()
2388         mpc_parens(Regex, (mpc_dtor_t)mpc_delete),
2389         mpc_squares(Range, (mpc_dtor_t)mpc_delete),
2390         mpc_apply_to(mpc_escape(), mpcf_re_escape, &mode),
2391         mpc_apply_to(mpc_noneof(")|"), mpcf_re_escape, &mode)
2392       ));
2393     
   CID 1453131:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_escape()" leaks it.
2394       mpc_define(Range, mpc_apply(
2395         mpc_many(mpcf_strfold, mpc_or(2, mpc_escape(), mpc_noneof("]"))),
2396         mpcf_re_range
2397       ));
2398     
2399       RegexEnclose = mpc_whole(mpc_predictive(Regex), (mpc_dtor_t)mpc_delete);

** CID 1453130:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2420 in mpc_re_mode()


________________________________________________________________________________________________________
*** CID 1453130:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2420 in mpc_re_mode()
2414       }
2415     
2416       mpc_cleanup(6, RegexEnclose, Regex, Term, Factor, Base, Range);
2417     
2418       mpc_optimise(r.output);
2419     
   CID 1453130:  Resource leaks  (RESOURCE_LEAK)
   Variable "RegexEnclose" going out of scope leaks the storage it points to.
2420       return r.output;
2421     
2422     }
2423     
2424     /*
2425     ** Common Fold Functions

** CID 1453129:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2378 in mpc_re_mode()


________________________________________________________________________________________________________
*** CID 1453129:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2378 in mpc_re_mode()
2372         mpc_maybe(mpc_and(2, mpcf_snd_free, mpc_char('|'), Regex, free)),
2373         (mpc_dtor_t)mpc_delete
2374       ));
2375     
2376       mpc_define(Term, mpc_many(mpcf_re_and, Factor));
2377     
   CID 1453129:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_pass()" leaks it.
2378       mpc_define(Factor, mpc_and(2, mpcf_re_repeat,
2379         Base,
2380         mpc_or(5,
2381           mpc_char('*'), mpc_char('+'), mpc_char('?'),
2382           mpc_brackets(mpc_int(), free),
2383           mpc_pass()),

** CID 1453128:    (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2370 in mpc_re_mode()
/shlr/mpc/mpc.c: 2378 in mpc_re_mode()
/shlr/mpc/mpc.c: 2378 in mpc_re_mode()
/shlr/mpc/mpc.c: 2378 in mpc_re_mode()


________________________________________________________________________________________________________
*** CID 1453128:    (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2370 in mpc_re_mode()
2364       Regex  = mpc_new("regex");
2365       Term   = mpc_new("term");
2366       Factor = mpc_new("factor");
2367       Base   = mpc_new("base");
2368       Range  = mpc_new("range");
2369     
   CID 1453128:    (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_char('|')" leaks it.
2370       mpc_define(Regex, mpc_and(2, mpcf_re_or,
2371         Term,
2372         mpc_maybe(mpc_and(2, mpcf_snd_free, mpc_char('|'), Regex, free)),
2373         (mpc_dtor_t)mpc_delete
2374       ));
2375     
/shlr/mpc/mpc.c: 2378 in mpc_re_mode()
2372         mpc_maybe(mpc_and(2, mpcf_snd_free, mpc_char('|'), Regex, free)),
2373         (mpc_dtor_t)mpc_delete
2374       ));
2375     
2376       mpc_define(Term, mpc_many(mpcf_re_and, Factor));
2377     
   CID 1453128:    (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_char('+')" leaks it.
2378       mpc_define(Factor, mpc_and(2, mpcf_re_repeat,
2379         Base,
2380         mpc_or(5,
2381           mpc_char('*'), mpc_char('+'), mpc_char('?'),
2382           mpc_brackets(mpc_int(), free),
2383           mpc_pass()),
/shlr/mpc/mpc.c: 2378 in mpc_re_mode()
2372         mpc_maybe(mpc_and(2, mpcf_snd_free, mpc_char('|'), Regex, free)),
2373         (mpc_dtor_t)mpc_delete
2374       ));
2375     
2376       mpc_define(Term, mpc_many(mpcf_re_and, Factor));
2377     
   CID 1453128:    (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_char('*')" leaks it.
2378       mpc_define(Factor, mpc_and(2, mpcf_re_repeat,
2379         Base,
2380         mpc_or(5,
2381           mpc_char('*'), mpc_char('+'), mpc_char('?'),
2382           mpc_brackets(mpc_int(), free),
2383           mpc_pass()),
/shlr/mpc/mpc.c: 2378 in mpc_re_mode()
2372         mpc_maybe(mpc_and(2, mpcf_snd_free, mpc_char('|'), Regex, free)),
2373         (mpc_dtor_t)mpc_delete
2374       ));
2375     
2376       mpc_define(Term, mpc_many(mpcf_re_and, Factor));
2377     
   CID 1453128:    (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_char('?')" leaks it.
2378       mpc_define(Factor, mpc_and(2, mpcf_re_repeat,
2379         Base,
2380         mpc_or(5,
2381           mpc_char('*'), mpc_char('+'), mpc_char('?'),
2382           mpc_brackets(mpc_int(), free),
2383           mpc_pass()),

** CID 1453127:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2370 in mpc_re_mode()


________________________________________________________________________________________________________
*** CID 1453127:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2370 in mpc_re_mode()
2364       Regex  = mpc_new("regex");
2365       Term   = mpc_new("term");
2366       Factor = mpc_new("factor");
2367       Base   = mpc_new("base");
2368       Range  = mpc_new("range");
2369     
   CID 1453127:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_maybe(mpc_and(2, mpcf_snd_free, mpc_char('|'), Regex, free))" leaks it.
2370       mpc_define(Regex, mpc_and(2, mpcf_re_or,
2371         Term,
2372         mpc_maybe(mpc_and(2, mpcf_snd_free, mpc_char('|'), Regex, free)),
2373         (mpc_dtor_t)mpc_delete
2374       ));
2375     

** CID 1453126:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2394 in mpc_re_mode()


________________________________________________________________________________________________________
*** CID 1453126:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2394 in mpc_re_mode()
2388         mpc_parens(Regex, (mpc_dtor_t)mpc_delete),
2389         mpc_squares(Range, (mpc_dtor_t)mpc_delete),
2390         mpc_apply_to(mpc_escape(), mpcf_re_escape, &mode),
2391         mpc_apply_to(mpc_noneof(")|"), mpcf_re_escape, &mode)
2392       ));
2393     
   CID 1453126:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_noneof("]")" leaks it.
2394       mpc_define(Range, mpc_apply(
2395         mpc_many(mpcf_strfold, mpc_or(2, mpc_escape(), mpc_noneof("]"))),
2396         mpcf_re_range
2397       ));
2398     
2399       RegexEnclose = mpc_whole(mpc_predictive(Regex), (mpc_dtor_t)mpc_delete);

** CID 1453125:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2378 in mpc_re_mode()


________________________________________________________________________________________________________
*** CID 1453125:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2378 in mpc_re_mode()
2372         mpc_maybe(mpc_and(2, mpcf_snd_free, mpc_char('|'), Regex, free)),
2373         (mpc_dtor_t)mpc_delete
2374       ));
2375     
2376       mpc_define(Term, mpc_many(mpcf_re_and, Factor));
2377     
   CID 1453125:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_int()" leaks it.
2378       mpc_define(Factor, mpc_and(2, mpcf_re_repeat,
2379         Base,
2380         mpc_or(5,
2381           mpc_char('*'), mpc_char('+'), mpc_char('?'),
2382           mpc_brackets(mpc_int(), free),
2383           mpc_pass()),

** CID 1453124:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2420 in mpc_re_mode()


________________________________________________________________________________________________________
*** CID 1453124:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 2420 in mpc_re_mode()
2414       }
2415     
2416       mpc_cleanup(6, RegexEnclose, Regex, Term, Factor, Base, Range);
2417     
2418       mpc_optimise(r.output);
2419     
   CID 1453124:  Resource leaks  (RESOURCE_LEAK)
   Variable "Base" going out of scope leaks the storage it points to.
2420       return r.output;
2421     
2422     }
2423     
2424     /*
2425     ** Common Fold Functions

** CID 1453123:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 3558 in mpca_grammar_st()


________________________________________________________________________________________________________
*** CID 1453123:  Resource leaks  (RESOURCE_LEAK)
/shlr/mpc/mpc.c: 3558 in mpca_grammar_st()
3552             mpc_sym("!"),
3553             mpc_tok_brackets(mpc_int(), free),
3554             mpc_pass()),
3555         mpc_soft_delete
3556       ));
3557     
   CID 1453123:  Resource leaks  (RESOURCE_LEAK)
   Failing to save or free storage allocated by "mpc_tok(mpc_and(3, mpcaf_fold_regex, mpc_regex_lit(), mpc_many(mpcf_strfold, mpc_oneof("ms")), mpc_lift_val(st), free, free))" leaks it.
3558       mpc_define(Base, mpc_or(5,
3559         mpc_apply_to(mpc_tok(mpc_string_lit()), mpcaf_grammar_string, st),
3560         mpc_apply_to(mpc_tok(mpc_char_lit()),   mpcaf_grammar_char, st),
3561         mpc_tok(mpc_and(3, mpcaf_fold_regex, mpc_regex_lit(), mpc_many(mpcf_strfold, mpc_oneof("ms")), mpc_lift_val(st), free, free)),
3562         mpc_apply_to(mpc_tok_braces(mpc_or(2, mpc_digits(), mpc_ident()), free), mpcaf_grammar_id, st),
3563         mpc_tok_parens(Grammar, mpc_soft_delete)

Lots of these look like false positives - i.e. the destructor such as free is getting stored somewhere and will be used to free the memory later. Perhaps worth verifying these in valgrind?