From 3c767e697e5ec356e86a9af9a4e8ddb955431907 Mon Sep 17 00:00:00 2001 From: Bastian Triller Date: Sat, 13 Dec 2025 15:32:45 +0100 Subject: [PATCH] Fix owner on file creation with content attribute Fixed in master by 3cda0000c736876737d9907c22533054e57bda91. Add test which checks owner on created files with content attribute. Ticket: CFE-4621 --- cf-agent/verify_files.c | 2 - tests/acceptance/10_files/01_create/013.cf | 72 ++++++++++++++++++++++ 2 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 tests/acceptance/10_files/01_create/013.cf diff --git a/cf-agent/verify_files.c b/cf-agent/verify_files.c index 3eb70ac1cb..b048fa37d2 100644 --- a/cf-agent/verify_files.c +++ b/cf-agent/verify_files.c @@ -577,8 +577,6 @@ static PromiseResult VerifyFilePromise(EvalContext *ctx, char *path, const Promi PromiseResult render_result = WriteContentFromString(ctx, path, &a, pp); result = PromiseResultUpdate(result, render_result); - - goto exit; } /* Phase 3b - content editing */ diff --git a/tests/acceptance/10_files/01_create/013.cf b/tests/acceptance/10_files/01_create/013.cf new file mode 100644 index 0000000000..84fe41553a --- /dev/null +++ b/tests/acceptance/10_files/01_create/013.cf @@ -0,0 +1,72 @@ +####################################################### +# +# Create a file with content attribute and owner via perms, +# but witout create attribute, check owner +# +####################################################### + +body common control +{ + inputs => { "../../default.cf.sub" }; + bundlesequence => { default("$(this.promise_filename)") }; + version => "1.0"; +} + +####################################################### + +bundle agent init +{ + files: + "$(G.testfile)" + delete => init_delete; +} + +body delete init_delete +{ + dirlinks => "delete"; + rmdirs => "true"; +} + +####################################################### + +bundle agent test +{ + vars: + "owner" string => "nobody"; + + files: + "$(G.testfile)" + content => "", + perms => test_perms($(owner)); +} + +body perms test_perms(o) +{ + rxdirs => "false"; + mode => "644"; + owners => { "$(o)" }; + groups => { "0" }; +} + +####################################################### + +bundle agent check +{ + vars: + "ui" data => getuserinfo(filestat($(G.testfile), "uid")); + + classes: + "not_ok" not => strcmp($(test.owner), $(ui[username])); + + reports: + DEBUG:: + "expected: username = '$(test.owner)'"; + "got: username = '$(ui[username])'"; + !not_ok:: + "$(this.promise_filename) Pass"; + not_ok:: + "$(this.promise_filename) FAIL"; +} + +### PROJECT_ID: core +### CATEGORY_ID: 27