From: Daiki Ueno Date: Tue, 28 Oct 2014 06:51:01 +0000 (+0900) Subject: xgettext: Fix double-free in singular/plural argument extraction X-Git-Tag: v0.19.4~70 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8137d2b4;p=thirdparty%2Fgettext.git xgettext: Fix double-free in singular/plural argument extraction After commit 6aa7b7ed in 2009, xgettext assumed that ARGNUM1 and ARGNUM2 of -k are different. That could cause an double-free in exceptional cases. Reported by Johan Liljegren in: . * xgettext.c (arglist_parser_remember_literal): Don't assume that ARGNUM1 and ARGNUM2 are different. --- diff --git a/gettext-tools/src/ChangeLog b/gettext-tools/src/ChangeLog index fd943c80a..e5ff79481 100644 --- a/gettext-tools/src/ChangeLog +++ b/gettext-tools/src/ChangeLog @@ -1,3 +1,14 @@ +2014-10-28 Daiki Ueno + + xgettext: Fix double-free in singular/plural argument extraction + After commit 6aa7b7ed in 2009, xgettext assumed that ARGNUM1 and + ARGNUM2 of -k are different. That could cause an double-free in + exceptional cases. + Reported by Johan Liljegren in: + . + * xgettext.c (arglist_parser_remember_literal): Don't assume that + ARGNUM1 and ARGNUM2 are different. + 2014-10-15 Daiki Ueno * gettext 0.19.3 released. diff --git a/gettext-tools/src/xgettext.c b/gettext-tools/src/xgettext.c index eb3a66025..a8f3af699 100644 --- a/gettext-tools/src/xgettext.c +++ b/gettext-tools/src/xgettext.c @@ -2791,7 +2791,7 @@ arglist_parser_remember_literal (struct arglist_parser *ap, /* Mark msgid as done. */ cp->argnum1 = 0; } - if (argnum == cp->argnum2) + else if (argnum == cp->argnum2) { cp->msgid_plural = string; cp->msgid_plural_escape = type;