Whamcloud - gitweb
Avoid infinite substitution loop in subst caused by autoconf pre-v2.60
authorTheodore Ts'o <tytso@mit.edu>
Sun, 12 Nov 2006 22:43:50 +0000 (17:43 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 12 Nov 2006 22:43:50 +0000 (17:43 -0500)
Autoconf versions before 2.60 don't have datarootdir defined, and so this
resulted in a @datarootdir@ --> @datarootdir@ infinite expansion.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
util/ChangeLog
util/subst.c

index b9ca5c5..5f8f89a 100644 (file)
@@ -1,3 +1,10 @@
+2006-11-12  Theodore Tso  <tytso@mit.edu>
+
+       * subst.c (substitute_line): Avoid infinite loop caused by a
+               substition such as @datarootdir@ --> @datarootdir@.  (This
+               was caused by autoconf versions before 2.60, which didn't
+               define the @datarootdir@ expansion.
+
 2006-10-22  Theodore Tso  <tytso@mit.edu>
 
        * subst.conf.in: Add datarootdir definition for compatibility with
index 9244e62..445d318 100644 (file)
@@ -165,6 +165,12 @@ static void substitute_line(char *line)
 #endif
                ptr = name_ptr-1;
                replace_string(ptr, end_ptr, ent->value);
+               if ((ent->value[0] == '@') &&
+                   (strlen(replace_name) == strlen(ent->value)-2) &&
+                   !strncmp(replace_name, ent->value+1, 
+                            strlen(ent->value)-2))
+                       /* avoid an infinite loop */
+                       ptr += strlen(ent->value);
        }
        /*
         * Now do a second pass to expand ${FOO}