diff --git a/cf-agent/verify_files_utils.c b/cf-agent/verify_files_utils.c index d8c58fb136..353d7c4cc1 100644 --- a/cf-agent/verify_files_utils.c +++ b/cf-agent/verify_files_utils.c @@ -71,6 +71,7 @@ #include #include +#include "cf3.defs.h" #define CF_RECURSION_LIMIT 100 @@ -1570,6 +1571,13 @@ bool CopyRegularFile(EvalContext *ctx, const char *source, const char *dest, con } mode &= 0777; /* Never preserve SUID bit */ + /* If perms are promised for this file, use those instead */ + if ((attr->perms.plus != CF_SAMEMODE) && (attr->perms.minus != CF_SAMEMODE)) + { + mode |= attr->perms.plus; + mode &= ~(attr->perms.minus); + } + if (!CopyRegularFileNet(source, dest, ToChangesPath(new), sstat->st_size, attr->copy.encrypt, conn, mode)) {