From: Jim Meyering Date: Mon, 27 Dec 2010 23:19:56 +0000 (-0500) Subject: Fix infloop on persistent failing calloc in regex. X-Git-Tag: glibc-2.13~24 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2543fef229599e8a6e4feeea65ca2dd3f984154f;p=thirdparty%2Fglibc.git Fix infloop on persistent failing calloc in regex. --- diff --git a/ChangeLog b/ChangeLog index e86929eb311..31b8a736dc7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-12-27 Jim Meyering + + [BZ #12348] + * posix/regexec.c (build_trtable): Return failure indication upon + calloc failure. Otherwise, re_search_internal could infloop on OOM. + 2010-12-25 Ulrich Drepper [BZ #12201] diff --git a/NEWS b/NEWS index 50705961638..3edaf547daf 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -GNU C Library NEWS -- history of user-visible changes. 2010-12-26 +GNU C Library NEWS -- history of user-visible changes. 2010-12-27 Copyright (C) 1992-2009, 2010 Free Software Foundation, Inc. See the end for copying conditions. @@ -12,7 +12,7 @@ Version 2.13 3268, 7066, 10085, 10851, 11149, 11611, 11640, 11655, 11701, 11840, 11856, 11883, 11903, 11904, 11968, 11979, 12005, 12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108, 12113, 12140, 12159, 12167, 12191, 12194, 12201, 12204, - 12205, 12207 + 12205, 12207, 12348 * New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark diff --git a/posix/regexec.c b/posix/regexec.c index 7f7ae3123fa..8d4475cdb98 100644 --- a/posix/regexec.c +++ b/posix/regexec.c @@ -3373,6 +3373,8 @@ build_trtable (const re_dfa_t *dfa, re_dfastate_t *state) { state->trtable = (re_dfastate_t **) calloc (sizeof (re_dfastate_t *), SBC_MAX); + if (BE (state->trtable == NULL, 0)) + return 0; return 1; } return 0;