]> git.puffer.fish Git - mirror/frr.git/commitdiff
build: add recursion limit for AX_RECURSIVE_EVAL
authorDavid Lamparter <equinox@opensourcerouting.org>
Thu, 25 Jan 2024 15:09:20 +0000 (16:09 +0100)
committerDavid Lamparter <equinox@opensourcerouting.org>
Sat, 27 Jan 2024 18:01:19 +0000 (19:01 +0100)
The autoconf version can just loop forever, abort instead.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
m4/ax_recursive_eval.m4

index 0625aca2255da4a76b2dcfa13af17c8936dfaa30..02836025f7701bbec4bb7a1945b5694617014c89 100644 (file)
@@ -1,3 +1,5 @@
+# SPDX-License-Identifier: GPL-2.0-or-later WITH Autoconf-exception-2.0
+#
 # ===========================================================================
 #    https://www.gnu.org/software/autoconf-archive/ax_recursive_eval.html
 # ===========================================================================
 # DESCRIPTION
 #
 #   Interpolate the VALUE in loop until it doesn't change, and set the
-#   result to $RESULT. WARNING: It's easy to get an infinite loop with some
-#   unsane input.
+#   result to $RESULT.  This version has a recursion limit (10).
 #
 # LICENSE
 #
 #   Copyright (c) 2008 Alexandre Duret-Lutz <adl@gnu.org>
-#
-#   This program is free software; you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation; either version 2 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <https://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 1
+#   Copyright (c) 2024 David Lamparter <equinox@opensourcerouting.org>
 
 AC_DEFUN([AX_RECURSIVE_EVAL],
 [_lcl_receval="$1"
 $2=`(test "x$prefix" = xNONE && prefix="$ac_default_prefix"
      test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
      _lcl_receval_old=''
-     while test "[$]_lcl_receval_old" != "[$]_lcl_receval"; do
+     for _rec_limit in 1 2 3 4 5 6 7 8 9 10; do
+       test "[$]_lcl_receval_old" = "[$]_lcl_receval" && break
        _lcl_receval_old="[$]_lcl_receval"
        eval _lcl_receval="\"[$]_lcl_receval\""
      done