From 2543fef229599e8a6e4feeea65ca2dd3f984154f Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Mon, 27 Dec 2010 18:19:56 -0500 Subject: Fix infloop on persistent failing calloc in regex. --- ChangeLog | 6 ++++++ NEWS | 4 ++-- posix/regexec.c | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e86929e..31b8a73 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 5070596..3edaf54 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 7f7ae31..8d4475c 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; -- cgit v1.1