]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
CVE-2026-4480/CVE-2026-4408: lib/util: inline string_sub2() into string_sub() the...
authorStefan Metzmacher <metze@samba.org>
Thu, 23 Apr 2026 16:20:15 +0000 (18:20 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 26 May 2026 12:51:32 +0000 (12:51 +0000)
This will simplify further changes.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=16033
BUG: https://bugzilla.samba.org/show_bug.cgi?id=16034

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
lib/util/substitute.c

index b7b5588da863faa960200d9f9fd32e2120462b46..26362ca77b2c74e5622af76860f798ffe06fd73e 100644 (file)
  use of len==0 which was for no length checks to be done.
 **/
 
-static void string_sub2(char *s,const char *pattern, const char *insert, size_t len,
-                       bool remove_unsafe_characters, bool replace_once,
-                       bool allow_trailing_dollar)
+void string_sub(char *s, const char *pattern, const char *insert, size_t len)
 {
+       bool remove_unsafe_characters = true;
        char *p;
        size_t ls, lp, li, i;
 
@@ -79,13 +78,6 @@ static void string_sub2(char *s,const char *pattern, const char *insert, size_t
                for (i=0;i<li;i++) {
                        switch (insert[i]) {
                        case '$':
-                               /* allow a trailing $
-                                * (as in machine accounts) */
-                               if (allow_trailing_dollar && (i == li - 1 )) {
-                                       p[i] = insert[i];
-                                       break;
-                               }
-                               FALL_THROUGH;
                        case '`':
                        case '"':
                        case '\'':
@@ -107,17 +99,9 @@ static void string_sub2(char *s,const char *pattern, const char *insert, size_t
                }
                s = p + li;
                ls = ls + li - lp;
-
-               if (replace_once)
-                       break;
        }
 }
 
-void string_sub(char *s,const char *pattern, const char *insert, size_t len)
-{
-       string_sub2( s, pattern, insert, len, true, false, false );
-}
-
 /**
  Similar to string_sub() but allows for any character to be substituted. 
  Use with caution!