From 8137d2b48aee10ce731588e440ea7a5ba100d2d0 Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Tue, 28 Oct 2014 15:51:01 +0900 Subject: [PATCH] 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. --- gettext-tools/src/ChangeLog | 11 +++++++++++ gettext-tools/src/xgettext.c | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) 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; -- 2.47.2