]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Check fr_sbuff_in_bstrncpy() return in xlat_func_rpad() (CID #15039490) (#4515)
authorJames Jones <jejones3141@gmail.com>
Wed, 1 Jun 2022 14:43:30 +0000 (09:43 -0500)
committerGitHub <noreply@github.com>
Wed, 1 Jun 2022 14:43:30 +0000 (10:43 -0400)
src/lib/unlang/xlat_builtin.c

index 281b0ae9c04b8c9f88c1e93c20ba598c515aaafe..a8ef02f6b71fe21b1b680138ae959f20d50856ee 100644 (file)
@@ -1777,6 +1777,7 @@ static xlat_action_t xlat_func_rpad(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out,
                if (len >= pad_len) continue;
 
                if (fr_value_box_bstr_realloc(in, &buff, in, pad_len) < 0) {
+               fail:
                        RPEDEBUG("Failed reallocing input data");
                        return XLAT_ACTION_FAIL;
                }
@@ -1793,7 +1794,9 @@ static xlat_action_t xlat_func_rpad(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out,
                 *      Copy fill as a repeating pattern
                 */
                while ((remaining = fr_sbuff_remaining(&sbuff))) {
-                       fr_sbuff_in_bstrncpy(&sbuff, fill_str, remaining >= fill_len ? fill_len : remaining);
+                       if (fr_sbuff_in_bstrncpy(&sbuff, fill_str, remaining >= fill_len ? fill_len : remaining) < 0) {
+                               goto fail;
+                       }
                }
        }