<div class="container">
    <h1>Security update for cfengine, cfengine-masterfiles</h1>

    <table class="table table-striped table-bordered">
        <tbody>
        <tr>
            <th>Announcement ID:</th>
            <td>SUSE-SU-2023:2126-1</td>
        </tr>
        
        <tr>
            <th>Rating:</th>
            <td>moderate</td>
        </tr>
        <tr>
            <th>References:</th>
            <td>
                <ul>
                    
                        <li style="display: inline;">
                            <a href="https://bugzilla.suse.com/show_bug.cgi?id=1086475">#1086475</a>
                        </li>
                    
                        <li style="display: inline;">
                            <a href="https://bugzilla.suse.com/show_bug.cgi?id=1197029">#1197029</a>
                        </li>
                    
                        <li style="display: inline;">
                            <a href="https://bugzilla.suse.com/show_bug.cgi?id=1197031">#1197031</a>
                        </li>
                    
                </ul>
            </td>
        </tr>
        
            <tr>
                <th>
                    Cross-References:
                </th>
                <td>
                    <ul>
                    
                        <li style="display: inline;">
                            <a href="https://www.suse.com/security/cve/CVE-2021-44215.html">CVE-2021-44215</a>
                        </li>
                    
                        <li style="display: inline;">
                            <a href="https://www.suse.com/security/cve/CVE-2021-44216.html">CVE-2021-44216</a>
                        </li>
                    
                    </ul>
                </td>
            </tr>
            <tr>
                <th>CVSS scores:</th>
                <td>
                    <ul class="list-group">
                        
                            <li class="list-group-item">
                                <span class="cvss-reference">CVE-2021-44215</span>
                                <span class="cvss-source">
                                    (
                                    
                                        SUSE
                                    
                                    ):
                                </span>
                                <span class="cvss-score">4.4</span>
                                <span class="cvss-vector">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L</span>
                            </li>
                        
                            <li class="list-group-item">
                                <span class="cvss-reference">CVE-2021-44215</span>
                                <span class="cvss-source">
                                    (
                                    
                                        NVD
                                    
                                    ):
                                </span>
                                <span class="cvss-score">5.5</span>
                                <span class="cvss-vector">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N</span>
                            </li>
                        
                            <li class="list-group-item">
                                <span class="cvss-reference">CVE-2021-44216</span>
                                <span class="cvss-source">
                                    (
                                    
                                        SUSE
                                    
                                    ):
                                </span>
                                <span class="cvss-score">3.3</span>
                                <span class="cvss-vector">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N</span>
                            </li>
                        
                            <li class="list-group-item">
                                <span class="cvss-reference">CVE-2021-44216</span>
                                <span class="cvss-source">
                                    (
                                    
                                        NVD
                                    
                                    ):
                                </span>
                                <span class="cvss-score">5.5</span>
                                <span class="cvss-vector">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N</span>
                            </li>
                        
                    </ul>
                </td>
            </tr>
        
        <tr>
            <th>Affected Products:</th>
            <td>
                <ul class="list-group">
                    
                        <li class="list-group-item">Advanced Systems Management Module 12</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise High Performance Computing 12 SP2</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise High Performance Computing 12 SP3</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise High Performance Computing 12 SP4</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise High Performance Computing 12 SP5</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise Server 12</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise Server 12 SP1</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise Server 12 SP2</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise Server 12 SP3</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise Server 12 SP4</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise Server 12 SP5</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 12</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 12 SP1</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 12 SP2</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 12 SP3</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 12 SP4</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 12 SP5</li>
                    
                        <li class="list-group-item">SUSE Linux Enterprise Software Development Kit 12 SP5</li>
                    
                </ul>
            </td>
        </tr>
        </tbody>
    </table>

    <p>An update that solves two vulnerabilities, contains one feature and has one fix can now be installed.</p>

    <h2>Description:</h2>
    <p>This update for cfengine, cfengine-masterfiles fixes the following issues:</p>
<p>Changes in cfengine:</p>
<ul>
<li>cfengine3.target: removed, replaced by upstream cfengine3.service</li>
<li>In version 3.15.0, cfengine core split off libutils and libcompat
  directories as libntech. We include both together as we do not
  use or plan on using it outside of cfengine.</li>
</ul>
<p>Changes since 3.7.3 are below, in reverse chronological order:</p>
<ul>
<li>
<p>Update to version 3.21.0: (jsc#SLE-24222, bsc#1197029, CVE-2021-44215)</p>
</li>
<li>
<p>Added cf-support utility for generating support information
    (ENT-9037)</p>
</li>
<li>Adjusted cf-check and package module code for empty updates list
    (ENT-9050)</li>
<li>&#x27;$(this.promiser)&#x27; can now be used in &#x27;files&#x27; promise attributes
    &#x27;if&#x27;, &#x27;ifvarclass&#x27; and &#x27;unless&#x27; (CFE-2262, ENT-7008)</li>
<li>Fixed storage promise for nfs on MacOS (CFE-4093)</li>
<li>Fixed definition of _low_ldt class from cf-monitord (CFE-4022)</li>
<li>Insertion of contents of a file with blank lines into another
    file with blank lines no longer results in mixed content (ENT-8788)</li>
<li>Added suggestion to use a negative lookahead when non-convergent edits 
    are attempted (CFE-192)</li>
<li>Unresolved function calls that return scalar values are now
    considered OK for constraints expecting strings during syntax
    check (CFE-4094)</li>
<li>cf-monitord now honors monitorfacility in body monitor control
    (ENT-4492)</li>
<li>cf-serverd now periodically reloads its policy if it contains
    unresolved variables (e.g. $(sys.policy_hub) in &#x27;allowconnect&#x27;). (ENT-8456)</li>
<li>cf-serverd now starts in the network-online.target on systemd-based
    systems (ENT-8456)</li>
<li>edit_line bundles can now use the new $(edit.empty_before_use)
    variable mirroring the value of edit_defaults=>empty_before_use
    of the related files promise (ENT-5866)</li>
<li>Package modules with unresolved variables in their names are
    now skipped in package queries (ENT-9377)</li>
<li>Removed unsupported name_connect capability for udp_socket class
    (ENT-8824)</li>
<li>&#x27;meta&#x27; attribute can now be used in custom promises (CFE-3440)</li>
<li>Custom promise modules can now support the &#x27;action_policy&#x27;
    feature allowing promises of their custom types to be used
    in dry-run and simulation modes and in combination with
    &#x27;action_policy => "warn"&#x27;. (CFE-3433)</li>
<li>Use of custom promise modules that don&#x27;t fully specify protocol
    now results in warning (CFE-3433)</li>
<li>Warnings are logged if levels of log messages from custom promise
    modules don&#x27;t match results of their related promises (CFE-3433)</li>
<li>Adjusted SELinux policy for RHEL 9 (ENT-8824)</li>
<li>Fixed SELinux policy to allow hub to send emails (ENT-9557, ENT-9473)</li>
<li>SELinux no longer breaks SQL queries with large result sets on
    RHEL 8 hubs (ENT-9496)</li>
<li>Added SELinux LDAP port access for Mission Portal (ENT-9694)</li>
<li>Allowed ciphers are now properly split into TLS 1.3 cipher suites
    and ciphers used for TLS 1.2 and older (ENT-9018)</li>
<li>
<p>Fixed git_cfbs_deploy_refspec in masterfiles_stage leaving temp dir</p>
</li>
<li>
<p>Update to version 3.20.0:</p>
</li>
<li>
<p>&#x27;rxdirs&#x27; now defaults to "false". This means that the read
    permission bit no longer implies execute bit for directories,
    by default.
    Permission bits will be exactly as specified. To restore the
    old behavior you can still enable &#x27;rxdirs&#x27; explicitly. (CFE-951)</p>
</li>
<li>&#x27;N&#x27; or &#x27;Ns&#x27; signal specs can now be used to sleep  between signals
    sent by &#x27;processes&#x27; promises (CFE-2207, ENT-5899)</li>
<li>Directories named .no-distrib are no longer copied from policy
    server (in bootstrap/failsafe) (ENT-8079)</li>
<li>Files promises using content attribute or template method now
    create files by default unless create => "false" is specified.
    (CFE-3955, CFE-3916)</li>
<li>template_method mustache and inline_mustache now create file
    in promiser, if template rendering was successfull and file
    does not exist. (ENT-4792)</li>
<li>Added support for use of custom bodies in custom promise types
    (CFE-3574)</li>
<li>Custom promise modules now never get promise data with unresolved
    variables (CFE-3434)</li>
<li>Custom promises now use standard promise locking and support
    ifelapsed (CFE-3434)</li>
<li>Enable comment-attribute for custom promise types (CFE-3432)</li>
<li>cf-secret encrypt now encrypts for localhost if no key or host is
    specified (CFE-3874)</li>
<li>CFEngine now builds with OpenSSL 3 (ENT-8355)</li>
<li>CFEngine now requires OpenSSL 1.0.0 or newer (ENT-8355)</li>
<li>Moved Skipping loading of duplicate policy file messages from
    VERBOSE to DEBUG (CFE-3934)</li>
<li>CFEngine processes now try to use getent if the builtin user/group
    info lookup fails (CFE-3937)</li>
<li>No longer possible to undefine reserved hard classes (ENT-7718)</li>
<li>Unspecified &#x27;rxdirs&#x27; now produces a warning (CFE-951)</li>
<li>Fixed wrong use of log level in users promises log messages
    (CFE-3906)</li>
<li>Fixed default for ignore_missing_bundles and ignore_missing_inputs
    The issue here was that these attributes should default to false,
    but when they are assigned with an unresolved variable, they
    would default to true. (ENT-8430)</li>
<li>Added protocol 3 (cookie) to syntax description (ENT-8560)</li>
<li>Moved errors from data_sysctlvalues from inform to verbose
    (CFE-3818)</li>
<li>
<p>Fixed inconsistencies with methods promises and missing bundles</p>
</li>
<li>
<p>Update to 3.10.3 (fate#323149, bsc#1086475)</p>
<ul>
<li>Enable Xen hypervisor detection on all x86 platforms (CFE-2203)</li>
<li>cf-execd systemd service now only kills cf-execd itself (ENT-3395)</li>
<li>Ignore commented out entries in fstab when edit_fstab is true.
  (CFE-2198)</li>
<li>Do not move obstructions in warn policy mode (CFE-2740)</li>
<li>libutils/man.c: allow to override build time</li>
<li>Improve support for Alpine Linux</li>
<li>Promise comments for file changes moved to verbose (ENT-3414)</li>
<li>cf-execd now re-parses augments on policy reload (CFE-2406)</li>
<li>Fix memory leak in cf-execd, triggered when sending email failed.
  (CFE-2712)</li>
<li>Improve logging of ACL errors (ENT-3455)</li>
<li>Fix bug preventing permission changes on Unix sockets. (CFE-1782)</li>
<li>Do not tag large volatile variables for inventory
  sys.interfaces_data, sys.inet and sys.inet6 are commonly larger than the
  maximum data size allowed to be collected by cf-hub. Data larger than 1k
  is truncated. Instead of reporting truncated data this change stops
  tagging the variable so that it will not be collected to the Enterprise
  hub and will not be available in Mission Portal.
  Do not tag sys.inet and sys.inet6 for inventory (ENT-3483)</li>
<li>Fix mergedata segfault when called on a non-container (CFE-2704)</li>
<li>fix storage mount promise when existing mount point has a similar path
  (CFE-1960)</li>
<li>Properly redirect init script to systemd on debian systems (ENT-3326)</li>
<li>Do not segfault if policy_server.dat only contains whitespaces and/or line breaks</li>
<li>Fix segfault when cf-promises -p is called against a file with syntax errors.
  (CFE-2696)</li>
<li>Fix rare cf-execd hang (CFE-2719)</li>
<li>Properly reverse-resolve DNS names longer than 63 chars. (ENT-3379)</li>
<li>Fix segfault on JSON policy files with no bundles and bodies
  (CFE-2754)</li>
<li>Set the exit value when running cf-key
  When running cf-key to generate new keys, set the exit value of the
  program to be 0 on success and 1 on failure. This makes it easier to
  catch errors during setup of a new machine.
  Change the default behavior of the program to not write anything to stdout,
  opting to use the Log() function which can write to stdout and will also
  allow output to be sent to syslog.
  Add a --inform option to set the global log level to LOG_LEVEL_INFO.
  Change the permissions of the randseed file to 600 and catch the exception
  if the chmod call fails.</li>
<li>Improve misleading verbose message
  For constraints if/ifvarclass/unless, we now print the whole rval of the constraint.
  Previously the message was just "skipping variable because ifvarclass is not defined" while the variable itself was defined.
  Old message example:
    verbose: Skipping promise &#x27;mailto&#x27; because &#x27;if&#x27;/&#x27;ifvarclass&#x27; is not defined
  Changed to:
     verbose: Skipping promise &#x27;mailto&#x27; because &#x27;ifvarclass => not(isvariable("mailto"))&#x27; is not defined
  (CFE-2697)</li>
<li>Suppress output from systemctl based restart of services in bootstrap/failsafe
  (CFE-1459)</li>
</ul>
</li>
</ul>
<p>3.10.2:</p>
<pre><code>- fix cf-execd not exiting immediately with SIGTERM on AIX (ENT-3147)
- Fix logic detecting if running under a Xen Hypervisor (CFE-1563)
- Fix automatic service stops based on runlevel (redhat/centos)
  (CFE-2611)
- Allow opening symlinks owned by root or by the current user
  (CFE-2516)
- Stop service cfengine3 status from warning on multiple httpd processes
  (ENT-3123)
- fix IPv6 parsing to be un-reversed (CFE-2580)
</code></pre>
<p>3.10.1:</p>
<pre><code>New features/additions:

- &quot;make tar-package&quot; should create a tarball with the contents of
  &quot;make install&quot; (ENT-3041)

Bugfixes:

- Fix rare output truncation on Solaris 10/11 (CFE-2527)
- Change: Don&#x27;t error during dry run for proposed execution. (CFE-2561)
- prevent LMDB assertion on AIX by ensuring nested DB calls are
  not occuring during signal handler cleanup (CFE-1996)
- Detect Amazon Linux and set &quot;AmazonLinux&quot; hard class and
  sys.flavour variable.
- Fix &quot;lastseenexpireafter&quot; 32-bit signed int overflow.
- Add missing pcre build flags to cf-key (CFE-2525)
- Fix a bug which could cause cf-execd to believe there was
  an error when sending the email report, when there really wasn&#x27;t.
- cf-serverd: Auto configure max open files ulimit according to
  maxconnections (CFE-2575)
- Added vars and classes for CoreOS (ENT-3043)
</code></pre>
<p>3.10.0:</p>
<pre><code>New features/additions:

- All new features/additions for 3.8 and 3.9 are also included in 3.10.
- Add: Classes body tailored for use with diff
- New feature: Classes promise: allow classes without an expression to default to defined.
- Support for custom ports and host names as policy hub (CFE-953)
- Add: Definition of from_cfexecd for cf-execd initiated runs
  (CFE-2386)
- Add &lt; &lt;= &gt; &gt;= operators to eval().
- Add testing jUnit and TAP bundles and include them in stdlib.cf
- New function isipinsubnet() (ENT-7949)
- LogDebug(): implement module-based debug logging.
  Now most DEBUG messages are *not* printed even when &quot;-d&quot; is in use, but
  the specific debug module has to be enabled on the command line. For
  example to enable all log modules, run:
  cf-agent -d --log-modules=all
- Add: edit_line contains_literal_string to stdlib
- add variablesmatching_as_data() function paralleling variablesmatching()
  (Redmine #7885)
- Allow specifying agent maxconnections via def.json (CFE-2461)
- Add getuserinfo() function
- Add body agent control select_end_match_eof option. (CFE-2390)
- Add class to enable post transfer verification during policy updates
- Add ability to append to bundlesequnece with def.json (CFE-2460)
- policy_server.dat now appends a newline and supports host &amp; port

Changes:

- Rewrite iteration engine to avoid combinatorial explosion with nested variable expansions.
  This speeds up enormously the execution of policies that included long
  slists or JSON containers, that in the past didn&#x27;t even terminate.
  Change: &quot;cf_null&quot; string literal was changed to not be something
          special, and it&#x27;s now a string that can be used anywhere, like
          in slists or part of bundlesequence etc.
  NOTE: Old policy should be grep&#x27;ed for &quot;cf_null&quot; and in case such
        occurences were handled specially, they should be reworked.
  Change: &quot;--empty-list--&quot; is now never printed by format(),
          an empty list is now printed as &quot;{  }&quot;.
  Change: Order of pre-evaluation was slightly changed, A new &quot;vars&quot; pass
          at the beginning of pre-evaluation was added. It used to be
          classes-vars, but it was changed to vars-classes-vars. As a
          result some classes or variables might be evaluated at a
          different time than before. As always try to write policy code that works no matter what the
          order of execution is.
          One way is to always *guard* the execution of functions to avoid
          bogus function results.  For example the following will avoid
          running execresult() bevore the file has been created:
            execresult(&quot;cmd /path/to/filename&quot;) if =&gt; fileexists(&quot;/path/to/filename&quot;);
  C internals: NULL Rlist is now perfectly valid, in fact it is the only
               way to denote an empty Rlist.
  C internals: Since a slist variable can be NULL, API of
               EvalContextVariableGet() changed: The way to detect if a
               variable is found, is not to check return value for NULL,
               but to check returned *type* for CF_DATA_TYPE_NONE.
               Fixed what I could find as wrong API uses. (CFE-2162)
- Allow arbitrary service policies (CFE-2402)
- Behaviour change: cf-execd: Do not append -Dfrom_cfexecd to exec_command .
  (CFE-2386)
- Failsafe/Bootstrap no longer copy files starting with .git (like .gitignore) or .mailmap
  (CFE-2439)
- Change: Enable strict transport security
- Change: Disable http TRACE method
- Change: Verify transfered files during policy update
- Allow getvariablemetatags() and getclassmetatags() to get a specific tag key
- Change: Use more restrictive unix socket perms (ENT-2705)
- Add sys.user_data container for user starting agent.
- Pass package promise options to underlying apt-get call (#802)
  (CFE-2468)
- Change: Enable agent component management policy on systemd hosts
  (CFE-2429)
- Change: Switch processes restart_class logging to verbose
- Change: Log level for keeping verbatim JSON to DEBUG (CFE-2141)
- Change: Require network before cfengine services (CFE-2435)
- Behaviour change: getvalues(inexistent_var) returns an empty list.
  Restores 3.7.x and earlier behaviour. (CFE-2479)
- Behaviour change: when used with CFEngine 3.10.0 or greater,
  bundles set_config_values() and set_line_based() are appending a
  trailing space when inserting a configuration option with empty value.
  (CFE-2466)
- Behaviour change: getvalues() always returns a list now. Even when v is a simple
  string (i.e. not an iterable) it will return an slist with one element:
  the value of the string variable.
- Behaviour change: readintlist() now prints an error if the
  file contains real numbers, not integers, and aborts; previously it was
  printing an info-level error message, was half-reading an integer out of
  the real, and was continuing successfully.
- Ensure synchronous start and stop with systemctl (ENT-2841)
- Change select_region INI_section to match end of section or end of file
  (CFE-2519)

Bug fixes:

- fix files promise not setting ACL properly on directories. (CFE-616)
- Upgrade CFEngine dependencies to the following versions:
  - lixml2 2.9.4
  - OpenSSL 1.0.2j
  - LibYAML 0.1.7
  - Curl 7.50.3
- Fix cumulative() to accept up to 1000 years, like it&#x27;s documented.
- Fixed parsing of host name/IP and port number in cf-runagent
  (CFE-546)
- Fix intermittent error message of type:
  &quot;error: Process table lacks space for last columns: &quot; (CFE-2371)
- storage: Properly initialize the list of current mounts (CFE-1803)
- Fix &#x27;contain&#x27; attribute &#x27;no_output&#x27; having no effect when
  the &#x27;commands&#x27; promise is using &#x27;module =&gt; &quot;true&quot;&#x27;. (CFE-2412)
- Fix bug which caused empty emails to be sent from cf-execd
  if there was no previous output log and the new log was fully filtered
  by email filters. (ENT-2739)
- allow ifelse(FALSE, $(x), &quot;something else&quot;) to work. (CFE-2260)
- Fix connection cache, reuse connections when possible. (CFE-2447)
- Fix rare bug that would sometimes prevent redis-server from launching.
- Fix bug in files promise when multiple owners are promised
  but first one doesn&#x27;t exist, and improve logging . (CFE-2432)
- define kept outcome with action warn if edit_line is as expected
  (CFE-2424)
- Example using getvariablemetatags() and getclassmetatags() to get a specific tag key
- Remove 2k limit on strings length when writing JSON policies
  (CFE-2383)
- Fix ttime_range constraint to go higher than 2G as number of seconds.
- Change: cronjob bundle tolerates different spacing
- Allow editing fields in lines longer than 4k (CFE-2438)
- Don&#x27;t send empty emails for logs where everything is filtered.
  (ENT-2739)
- allow maplist(), maparray(), and mapdata() to evaluate function calls during iteration
  (ARCHIVE-1619)
- insert_lines is no longer implicitly matching EOF as
  end of the region if &#x27;select_end&#x27; pattern is not matched . (CFE-2263)
- Change: Remove executable bit from systemd units (CFE-2436)
- cf-serverd should reload def.json when reloading policy (CFE-2406)
- Fix cf-monitord detection of usernames of the process table on AIX.
- Speed up local and remote file copying and fix spurious errors.
  (ENT-2769)
- Fix occasional segfault when running getindices() on a
  variable that has indices of multiple depths (e.g. both &quot;a[x]&quot; and
  &quot;a[x][y]&quot;). (CFE-2397)
- When no file is provided when calling cf-promises
  with cf or json output, use promises.cf by default. This restores the
  previous behavior. (CFE-2375)
- Fix: Services starting or stopping unnecessarily (CFE-2421)
- Change: Split systemd units (CFE-2278)
- EOF is  matched as an end of the region in edit_line
  promises only if &#x27;select_end_match_eof&#x27; parameter is true. (CFE-2263)
- Fix double logging of output_prefix, and log process name for cf-agent syslog messages.
  (CFE-2225)
- Be less verbose if a network interface doesn&#x27;t have a MAC address.
  (CFE-1995)
- Fix: CFEngine choking on standard services (CFE-2806)
- fix insert_lines related memory corruption (CFE-2520)
- fix cf-serverd crash when reporting corrupted data. (ENT-3023)
- Fix ability to manage INI sections with metachars for
  manage_variable_values_ini and set_variable_values_ini (CFE-2519)
- Fix apt_get package module incorrectly using interactive mode.
- Fix crash on Solaris when ps ucb variant is not available. (CFE-2506)
- cf-serverd: Do not close connection when file does not exist.
  (CFE-2532)
- getvalues() now behaves correctly for old CFEngine arrays of depth 1.
  Known issues: getvalues() still misbehaves with double-indexed arrays
  (see (CFE-2504, CFE-2536)
</code></pre>
<p>3.9.0:</p>
<pre><code>New features/additions:

- Add optional interface parameter to iprange() to match only one interface.
- Allow &#x27;=&#x27; in symbolic modes (Redmine #7826)
- Add: FreeBSD ports package module
- New package module for FreeBSD pkg package manager.
- Add support for adding/removing fifos in policy
- Add Linux parsing of /proc/net/ data.
  - sys.inet
  - sys.inet6
  - sys.interface_data
  - Data is returned as a data container.
  - See documentation for more details. (Jira CFE-1991)
- sys.ip2iface: new reverse mapping variable from IP to interface name
- Namespaced classes can now be specified on the command line.
- namespaces can now be passed to cf-runagent -D and --remote-bundles
  (Redmine #7856)
- Add &#x27;cf-full&#x27; and &#x27;json-full&#x27; to cf-promises &#x27;-p&#x27; option.
  They generate output based on the entire policy. The existing &#x27;cf&#x27;
  already behaved this way, and it has now been changed to generate
  output only for a single file, which the existing &#x27;json&#x27; option
  already does.
- New language functions: processexists() and findprocesses()
  (Redmine #7633)
- Implement new regex_replace() function. (Redmine #7346)
- Add log rotation policy for state/classes.jsonl log. (Redmine #7951)
- Added collect_vars utility bundle to stdlib
- Intoduce report_class_log attribute to body agent control.
  (Redmine #7951)
- Add standard_services service_method allowing for explicit usage
- cf-promises --show-vars can now show JSON variables.
- Add json_pipe mode to mapdata(), which allows piping a
  JSON container to an external program for manipulation and receiving
  JSON back. The `jq` tool is a good example where this mode can be
  useful. A corresponding `$(def.jq)` variable has also been added with
  a default path to this tool. See documentation for mapdata() for
  more information and examples. (Jira CFE-2071)
- behaviour change: &quot;true&quot; is always defined and &quot;false&quot; is never defined in a context expression.
- Add: nimclient package module for AIX
  This module provides basic functionality for using nimclient as a means
  to ensure packages are either present or absent. It does not support
  listing package updates available or provide any special caching.
- Add callstack_callers() and callstack_promisers() functions.
- Log variable definitions in debug output. (Redmine #7137)
- Add: Memory information to host info report (Jira CFE-1177)
- In Mustache templates, one can now use `` and
  `` tags to iterate over the top level element in a
  container. (Redmine #6545)
- Add network_connections() function that parses /proc/net
- Provide new -w argument to override the workdir for testing
- New feature: Emails sent by cf-execd can be filtered to get
  rid of emails for unwanted log messages. The attributes
  mailfilter_include and mailfilter_exclude in body executor
  control control what to include. See documentation for cf-execd for
  more information. (Jira CFE-2283)
- Add: file_make_mustache bundle to render mustache templates
- Add &#x27;-n&#x27; flag to cf-key to avoid host name lookups.
- cf-agent, cf-execd, cf-promises, cf-runagent and cf-serverd honor multiple -D, -N and -s arguments
  (Redmine #7191)
- Add &quot;canonify&quot; mode to mapdata().
- Add: printfile bodies to stdlib
- Add: New `results` classes body [] (Redmine #7418, #7481)
- Implement cf-runagent --remote-bundles and cf-serverd &quot;bundle&quot; access promise.
  (Redmine #7581)
- Add commands promise arglist attribute, augmenting args attribute.
- It&#x27;s now possible to reference variables in inline JSON,
  for example: `mergedata(&#x27;[ thing, { &quot;mykey&quot;: otherthing[123] } ]&#x27;)`.
  `thing` and `otherthing[123]` will be resolved as variables, since
  they are unquoted. See the documentation for more details.
  (Redmine #7871)
- Allow inline JSON to be used in the following function
  calls:
  - data_expand()
  - difference()
  - every()
  - filter()
  - format()
  - getindices()
  - getvalues()
  - grep()
  - intersection()
  - join()
  - length()
  - makerule()
  - mapdata()
  - maplist()
  - mean()
  - mergedata()
  - none()
  - nth()
  - parsejson()
  - product()
  - regarray()
  - reglist()
  - reverse()
  - shuffle()
  - some()
  - sort()
  - storejson()
  - string_mustache()
  - sublist()
  - sum()
  - unique()
  - url_get()
  - variance()
  For example: `mergedata(&#x27;[ &quot;thing&quot;, { &quot;mykey&quot;: &quot;myvalue&quot; } ]&#x27;)`
  See the documentation for more details. (Jira CFE-2253)
- Add: edit_line contains_literal_string to stdlib
- Add body agent control select_end_match_eof option. (Jira CFE-2390)
Changes:
- Change: classesmatching(): order of classes changed
- Change: getindices(), getvalues(), variablesmatching(), maparray():
  order of variables returned has changed
- Change: set_quoted_values uses bundle scoped classes
- Change: set_config_values uses bundle scoped classes
- Change: set_variable_values uses bundle scoped classes
- Change: set_config_values_matching uses bundle scoped classes
- Change: manage_variable_values_ini uses bundle scoped classes
- Change: set_line_based should use bundle scoped classes
  (Jira CFE-1959)
- getvalues() will now return a list also for data containers,
  and will descend recursively into the containers. (Redmine #7116)
- Change: Improve git drop user support
- Use new package promise as default package promise
  implementation. (Jira CFE-2332)
- Don&#x27;t follow symbolic links when copying extended attributes.
- When a bodydefault:_ body is
  defined, it will be used by all promises of type 
  unless another body is explicitly used.
- cf-serverd no longer appends &quot;-I -Dcfruncommand&quot; to
             cfruncommand, this has to be done manually in masterfiles
             body server control. (Redmine #7732)
- eval() function arguments mode and options are now
  optional.
- sort() function argument mode is now optional.
- Change: returnszero() no longer outputs the output of a command.
  The output can be seen by enabling info mode (-I).
- cfruncommand is not executed under shell. (Redmine #7409)
- Remove: Apache CGI module
- Change: Make maxbytes arg of readjson() and readyaml() optional
- Classes matching agent control&#x27;s abortclasses are
  now printed before exit, even if they are defined in common bundles.
  Previously the regex (in abortclasses) that matched the class was
  printed if the class was defined in a common bundle, but the class
  itself was printed if it was defined in an agent bundle. With this
  change, the defined class that caused the abort is always printed.
- Remove: Support for email settings from augments_file (Redmine #7682)
- Change: set_variable_values_ini uses bundle scoped classes
- findfiles() now skips relative paths. (Redmine #7981)
- Clients connections using non TLS protocol are rejected
  by default. . (Jira CFE-2339)
- Change: Policy files specified in the &quot;inputs&quot; section of
  def.json will no longer be auto-loaded. One has to refer to the
  which are using the &quot;inputs&quot; field inside def.json. (Redmine #7961)
- Change: Separate binary details from policy update (Redmine #7662)
- Add guard for binary upgrade during bootstrap (Redmine #7861)
- Change: Modernize pkg module and package_method
- Remove: Userdir apache module
- filestat(path, &quot;linktarget&quot;) now follows non-absolute links and returns full path of target.
  This introduces a change in behaviour. Here is an example:
  $ ls -l /bin/sh
  lrwxrwxrwx 1 root root 4 Jun  4  2015 /bin/sh -&gt; dash
  Previously the filestat function would return &quot;dash&quot;, and would also log
  an error that the file can not be read. Now it will return &quot;/bin/dash&quot;
  (or the final destination if it happens that /bin/dash is also a
  symlink).
  You can still get the previous behaviour by using
  filestat(path, &quot;linktarget_shallow&quot;). (Redmine #7404)
- Define (bootstrap|failsafe)_mode during update.cf when triggerd from failsafe.cf
  (Redmine #7861)
- Behavior change: The promise string of a processes
  promise now matches just the command line of each process instead of
  the line that is output by ps. This was done to reduce fragmentation
  between platforms, since ps is a very nonstandardized tool.
  (Jira CFE-2161)
- Allowed namespace names made more strict, to disallow
  namespaces that cannot be reached. (Redmine #7903)
- Behavior change: When using readintlist(), readreallist()
  or readstringlist(), parsing an empty file will no longer result in a
  failed function call, but instead an empty list. Failure to open the
  file will still result in a failed function call.
- insert_lines is no longer implicitly matching EOF as
  end of the region if &#x27;select_end&#x27; pattern is not matched .
  (Jira CFE-2263)
- EOF is  matched as an end of the region in edit_line
  promises only if &#x27;select_end_match_eof&#x27; parameter is true.
  (Jira CFE-2263)

Bug fixes:

- Upgrade CFEngine dependencies to the following versions:
  - Curl     7.48.0
  - libxml2  2.9.4
  - LMDB     0.9.18
  - OpenLDAP 2.4.44
  - OpenSSL  1.0.2h
  - PCRE     8.38
  (Jira ENT-2720)
- Upgrade dependencies to latest minor versions.
  For Community / Enterprise:
  For Enterprise:
- Fix bug which sometimes misparses user names in ps output.
- Fix: Problem with git not dropping privileges soon enough
- Allow def.json up to 5MB instead of 4K.
- It is possible to edit the same value in multiple regions
  of one file. (Redmine #7460)
- CFEngine on Windows no longer truncates log messages if the
  program in question is killed halfway through.
- Fixed a bug which caused def.json not being able to define
  classes based on other hard classes. (Jira CFE-2333)
- Change: Tighten Enterprise hub permissions (Jira ENT-2708)
- Fix a regression which would sometimes cause &quot;Permission
  denied&quot; errors on files inside directories with very restricted
  permissions. (Redmine #7808)
- Fix use-after-free in ArrayMap and HashMap (Redmine #7952)
- Package repositories are no more hit every time package promise
  is evaluated on SUSE.
- Fix a bug which sometimes caused package promises to be
  skipped with &quot;XX Another cf-agent seems to have done this since I
  started&quot; messages in the log, most notably in long running cf-agent
  runs (longer than one minute). (Redmine #7933)
- TTY detection should be more reliable. (Redmine #7606)
- cf-promises -p cf now produces valid cfengine code (Redmine #7956)
- Fix ps options for FreeBSD to check processes only in current host and not in jails
- cf-runagent now properly supports multiple -D or -s arguments
  (Redmine #7191)
- Fix: Work around impaired class definition from augments
  (Jira CFE-2333)
- Fix &quot;No such file or directory&quot; LMDB error on heavily loaded hosts.
  (Jira CFE-2300)
- Check for empty server response in RemoteDirList after decryption
  (Redmine #7908)
- Small performance optimization when cf-execd scans emails before sending.
- Fix handling of closed connections during transactions
  (Redmine #7926)
- The core ps parsing engine used for processes promises
  has been rewritten from scratch, and should be more robust than
  before. (Jira CFE-2161)
- Fix the lexer which could not handle empty newline(s)
  before a ```@endif```.
- groupexists() no longer fails to detect a group name
  starting with a digit. (Jira CFE-2351)
- Fix HP-UX specific bug that caused a lot of log output to disappear.
- Fix unresolved variable (Redmine #7931)
- Change: Suppress standard services noise on SUSE (Redmine #6968)
- Reduce verbosity of yum package module (Redmine #7485)
- cf-runagent: Allow connections to localhost instead of failing silently.
- Show errors regarding failure to copy extended attributes
  when doing a local file copy. Errors could happen when copying
  across two different mount points where the support for extended
  attributes is different between the mount points.
- Fix classes being set because of hash collision in the implementation.
  (Redmine #7912)
- fix build failure on FreeBSD 7.1 (Redmine #7415)
- Improve logging when managing setuid/setgid
- Reduce verbosity of apt_get package module (Redmine #7485)
- packagesmatching() and packageupdatesmatching() should work
  when new package promise is used. (Jira CFE-2246)
- Fix bug which could render host unable to recover from a
  syntax error, even if failsafe.cf was utilized. This could happen if
  the file containing the syntax error was specified in the def.json
  special file. (Redmine #7961)
- Prevent crash in cf-execd email code when policy server is not set.
- In case of networking error, assume checksum is wrong
- Fix two cases where action_policy warn still produces errors
  (Redmine #7274)
- Fix bad option nlwp to vzps on Proxmox / OpenVZ. (Redmine #6961)
- @if minimum_version now correctly ignores lines starting with &#x27;@&#x27;
  (Redmine #7862)
- No longer hang when changing permissions/ownership on fifos
  (Redmine #7030)
- readfile() and read*list() should print an error if they fail to read file.
  (Redmine #7702)
- The isvariable() function call now correctly accepts all
  array variables when specified inline. Previously it would not accept
  certain special characters, even though they could be specified
  indirectly by using a variable to hold it. (Redmine #7088)
- Fix file descriptor leak when there are network errors.
- Improve robustness of process table parsing on Solaris.
  (Jira CFE-2161)
- Installing packages containing version numbers using yum
  now works correctly. (Redmine #7825)
- Parse def.json vars, classes and inputs from the C
  code. This fixes a bug where certain entries in this file would be
  parsed too late to have any effect on the evaluation.
  (Redmine #7453, #7615)
- Change package modules permissions on hub package so that
  hub can execute package promises. (Redmine #7602)
- Fix: CFEngine choking on standard services (Jira CFE-2086)
- Fix: cf-upgrade on SUSE
- Fix: Stop cfengine choking on systemctl output (Jira CFE-2806)
- storage: Properly initialize the list of current mounts
  (Jira CFE-1803)
- Fix bug which caused empty emails to be sent from cf-execd
  if there was no previous output log and the new log was fully filtered
  by email filters. (Jira ENT-2739)
- Don&#x27;t send empty emails for logs where everything is filtered.
  (Jira ENT-2739)
- Fix intermittent error message of type:
  &quot;error: Process table lacks space for last columns: &quot;
  (Jira CFE-2371)
- Be less verbose if a network interface doesn&#x27;t have a MAC address.
  (Jira CFE-1995)
</code></pre>
<p>3.8.2:</p>
<pre><code>Fixes:

- Update library dependencies to latest version.
  Libraries upgraded:
  - curl 7.47.0
  - LMDB 0.9.18
  - MySQL 5.1.72
  - OpenLDAP 2.4.44
  - OpenSSL 1.0.2g
  - PostgreSQL 9.3.11
  - Redis 3.0.7
  - rsync 3.1.2
  PHP was kept at 5.6.17 because of problems with the 5.6.19 version.
- Reduce verbosity of apt_get package module (Redmine #7485)
- Reduce verbosity of yum package module (Redmine #7485)
- The isvariable() function call now correctly accepts all
  array variables when specified inline. Previously it would not accept
  certain special characters, even though they could be specified
  indirectly by using a variable to hold it. (Redmine #7088)
- Don&#x27;t follow symbolic links when copying extended attributes.
- Fix a bug which sometimes caused package promises to be
  skipped with &quot;XX Another cf-agent seems to have done this since I
  started&quot; messages in the log, most notably in long running cf-agent
  runs (longer than one minute). (Redmine #7933)
- Fix bug which could render host unable to recover from a
  syntax error, even if failsafe.cf was utilized. This could happen if
  the file containing the syntax error was specified in the def.json
  special file. (Redmine #7961)
- Change: Policy files specified in the &quot;inputs&quot; section of
  def.json will no longer be auto-loaded. One has to refer to the
  $(def.augments_inputs) variable in the policy (the standard
  masterfiles policies include this by default). This only affects
  installations which are not based on the standard masterfiles, and
  which are using the &quot;inputs&quot; field inside def.json. (Redmine #7961)
- Fix file descriptor leak when there are network errors.
- Fix cf-serverd error messages with classic protocol clients
  (Redmine #7818)
- Installing packages containing version numbers using yum
  now works correctly. (Redmine #7825)
- Fix ps options for FreeBSD to check processes only in current host and not in jails
- fix build failure on FreeBSD 7.1 (Redmine #7415)
- Show errors regarding failure to copy extended attributes
  when doing a local file copy. Errors could happen when copying
  across two different mount points where the support for extended
  attributes is different between the mount points.
- Fix classes being set because of hash collision in the implementation.
  (Redmine #7912)
- Allow def.json up to 5MB instead of 4K.
- Fix a regression which would sometimes cause &quot;Permission
  denied&quot; errors on files inside directories with very restricted
  permissions. (Redmine #7808)
- Change: Suppress standard services noise on SUSE (Redmine #6968)

Changes:

- Change: classesmatching(): order of classes changed
</code></pre>
<p>3.8.1:</p>
<pre><code>Changes:

- Upgrade CFEngine dependencies to the following versions:
  - OpenSSL   1.0.2e
  - PCRE      8.38
  - libxml2   2.9.3
  - OpenLDAP  2.4.43
  - libcurl   7.46.0
- Upgrade LMDB to version 0.9.17. (Redmine #7879)

Bug fixes:

- @if minimum_version now correctly ignores lines starting with &#x27;@&#x27;
  (Redmine #7862)
- Add guard for binary upgrade during bootstrap (Redmine #7861)
- Namespaced classes can now be specified on the command line.
- Fix bad option nlwp to vzps on Proxmox / OpenVZ. (Redmine #6961)
- Fix two cases where action_policy warn still produces errors
  (Redmine #7274)
- Parse def.json vars, classes and inputs from the C
  code. This fixes a bug where certain entries in this file would be
  parsed too late to have any effect on the evaluation.
  (Redmine #7453, #7615)
- Fix HP-UX specific bug that caused a lot of log output to disappear.
- Check for empty server response in RemoteDirList after decryption
  (Redmine #7908)
- getvalues() will now return a list also for data containers,
  and will descend recursively into the containers. (Redmine #7116)
- Define (bootstrap|failsafe)_mode during update.cf when triggerd from failsafe.cf
  (Redmine #7861)
</code></pre>
<p>3.8.0:</p>
<pre><code>New features/additions:

- New feature: Bodies can now inherit attribute values from
  other bodies by specifying &quot;inherit_from&quot; with the name of the body to
  inherit from, plus any arguments it accepts. For example:
    body classes myclasses
    {
        inherit_from =&gt; classes_generic(&quot;myname&quot;);
    }
    (Redmine #4309)
- Add url_get() function. (Redmine #6480)
- Add @if feature() syntax
  @if feature work like @if minimum_version but allows distinguishing
  between features chosen at compile time.
- Extend module protocol to create persistent classes.
  To use it, have the module print a line with &quot;^persistence=&quot;
  before printing any class names. &quot;persistence=0&quot; goes back to non-
  persistent classes. (Redmine #7302)
- Add: New `results` classes body (Redmine #7418)
- Add: Debug reports in cfe_internal_cleanup_agent_reports
- Add: Path to svcprop in stdlib
- Add: masterfiles-stage script to contrib
- Whitespace is now allowed in class expressions for
  readability, between class names and operators. (Redmine #7152)

Changes:

- Change: Clarify bootstrap/failsafe reports
- Change: Improve in-line docs for internal log maintenance
- Change: Improve efficiency and debug reports (Redmine #7527)
- Remove: 3.5 support from masterfiles policy framework
- Long promiser strings with multiple lines are now
  abbreviated in logs. (Redmine #3964)
- Change: Reunify Version based policy split
- Change: Separate binary details from policy update (Redmine #7662)
- Remove /var/cfengine/cf3..runlog. (Redmine #6957)
- Change: sys.libdir and sys.local_libdir to non version specific path
    - sys.libdir now resolves to $(sys.inputdir)/lib
    - sys.local_libdir now resolves to lib (Redmine #7559)
- Moved the following files to /var/cfengine/log/:
    - /var/cfengine/promise_summary.log
    - /var/cfengine/cfagent..log
- Change: Separate binary details from policy update (Redmine #7662)
- Remove: Support for email settings from augments_file (Redmine #7682)

Bug fixes:

- It is possible to edit the same value in multiple regions
  of one file. (Redmine #7460)
- Change package modules permissions on hub package so that
  hub can execute package promises. (Rednime #7602) (Redmine #7602)
- Fix exporting CSV reports through HTTPS. (Redmine #7267)
- cf-agent, cf-execd, cf-promises, cf-runagent and cf-serverd honor
  multiple -D, -N and -s arguments (Redmine #7191)
- readfile() and read*list() should print an error if they fail to read file.
  (Redmine #7702)
- No longer hang when changing permissions/ownership on fifos
  (Redmine #7030)
- Fix broken HA policy for 3rd disaster-recovery node.
- Fix: Policy errors for 3.5 and 3.6
- Mustache templates: Fix  key when value is not a
  primitive. The old behavior, when iterating across a map or array of
  maps, was to abort if the key was requested with . The new
  behavior is to always replace  with either the key name or the
  iteration position in the array. An error is printed if  is used
  outside of a Mustache iteration section.
- Fix build with musl libc. (Redmine #7455)
- Fixed a bug which could cause daemons to not to be killed
  correctly when upgrading or manually running &quot;service cfengine3 stop&quot;.
  (Redmine #7193)
- Fix daemons not restarting correctly on upgrade on AIX.
- Package promise: Fix inability to install certain packages
  with numbers. (Redmine #7421)
- Redmine #6027 Directories should no more be changed randomly
  into files. (Redmine #6027)
- Improve cf-serverd&#x27;s lock contention because of getpwnam()
             call. (Redmine #7643) (Redmine #7643)
- action_policy &quot;warn&quot; now correctly produces warnings instead
  of various other verbosity levels. (Redmine #7274)
- If there is an error saving a mustache template file
  it is now logged with log-level error (was inform).
- The JSON parser now supports unquoted strings as keys.
- Reduce malloc() thread contention on heavily loaded
  cf-serverd, by not exiting early in the logging function, if no message
  is to be printed. (Redmine #7624) (Redmine #7624)
- Fix a bug which caused daemons not to be restarted on
  upgrade. (Redmine #7528)
- Include latest security updates for dependencies.
- Fixed bug which would cause bff and depot packages not to
  run package scripts on removal. (Redmine #7193)
- Fix upgrade causing error message under systemd because of open ports.
- Fixed several bugs which prevented CFEngine from loading
  libraries from the correct location. This affected several platforms.
  (Redmine #6708)
- Legacy package promise: Result classes are now defined if
  the package being promised is already up to date. (Redmine #7399)
- failsafe.cf will be created when needed. (Redmine #7634)
  (Redmine #7634)
- If file_select.file_types is set to symlink and there
  are regular files in the scanned directory, CFEngine no longer
  produces an unnecessary error message. (Redmine #6996)
- Fix &#x27;AIX_PREINSTALL_ALREADY_DONE.txt: cannot create&#x27; error
  message on AIX.
- Fix package promise not removing dependent packages. (Redmine #7424)
- Fix: Solaris packages no longer contain duplicate library
  files, but instead symlinks to them. (Redmine #7591)
- Fix select_class not setting class when used in common bundle with slist.
  (Redmine #7482)
- Fix &quot;@endif&quot; keyword sometimes being improperly processed
  by policy parser. (Redmine #7413)
- Fix noise from internal policy to upgrade windows agents
  (Redmine #7456)
- cfruncommand now works if it contains spaces, with the TLS protocol.
  (Redmine #7405)
- Fix warning &quot;Failed to parse csv file entry&quot; with certain very long
  commands promises. (Redmine #7400)
- CFEngine no longer erronously passes -M to useradd on HP-UX. (Redmine #6734)
- cf-monitord no longer complains about missing thermal zone files.
  (Redmine #7238)
- systemd is now detected correctly if it is a symlink (Redmine #7297)
- TTY detection should be more reliable. (Redmine #7606)
  (Redmine #7606)
</code></pre>
<p>Changes in cfengine-masterfiles:</p>
<ul>
<li>
<p>Update to 3.21.0 (jsc#SLE-24222, bsc#1197029, CVE-2021-44215)</p>
</li>
<li>
<p>Added inventory for Raspberry Pi and DeviceTree devices (ENT-8628)</p>
</li>
<li>Added policy to enforce proper permissions on Mission Portal ldap directory (ENT-9693)</li>
<li>Added check to make sure cf-execd is running after attempting self upgrade on Windows</li>
<li>Added exception for ldap directory perms for settings.ldap.php (ENT-9697)
    (ENT-9573)</li>
<li>Added date to known paths for linux (CFE-4069)</li>
<li>Added fallback to top-level feeder dump directory (ENT-8936)</li>
<li>Added self upgrade knowledge for Suse 12, 15 and opensuse leap 15
    (ENT-9209)</li>
<li>Added self upgrade knowledge for debian 11 (ENT-9210)</li>
<li>Added ssh in paths.cf so that policy writers can use $(paths.ssh)
    (CFE-4037)</li>
<li>Added support for multiple superhubs per feeder (ENT-8936)</li>
<li>Amazon Linux now uses --setopt-exit_on_lock=True in redhat_no_locking_knowledge
    (ENT-9057)</li>
<li>Avoided error stopping apache when no pid file exists (ENT-9108)</li>
<li>Disabled explicit setting for SSLCompression for Mission Portal Apache.
    OpenSSL3 does not provide compression capability, when enabled
    Apache will not start.
    (ENT-8933)</li>
<li>Fixed deleting multiple hosts with distributed cleanup utility
    (ENT-8979)</li>
<li>Fixed directory in which windows agents source packages for upgrade
    (ENT-9010)</li>
<li>Fixed services_autorun_inputs working independently from services_autorun
    (CFE-4017)</li>
<li>Fixed set_line_based() for case when edit_defaults.empty_before_use is true
    (ENT-5866)</li>
<li>Made proc inventory configurable via Augments (CFE-4056)</li>
<li>Make device-tree inventory quieter in containers (ENT-9063)</li>
<li>Stopped applying locks to masterfiles-stage (ENT-9625)</li>
<li>Stopped loading several Apache modules on Enterprise Hubs by default:
    mod_auth_basic, mod_authz_host, mod_authz_owner, mod_dbd,
    mod_authn_file, mod_authz_dbm (ENT-8607, ENT-8602, ENT-8706,
    ENT-8609, ENT-9072, ENT-8605)</li>
<li>Updated filename conventions for AIX and Solaris packages (ENT-9095)</li>
<li>Fixed detection of location for httpd.pid (ENT-9603)</li>
<li>Added policy to manage permissions for php/runalerts-stamp (ENT-9703)</li>
<li>Ensured manual edits to httpd.conf are reverted (ENT-9686)</li>
</ul>
<p>3.20.0:</p>
<ul>
<li>Renamed bundle agent main to bundle agent mpf_main (CFE-3947)</li>
<li>Added prelink to paths.cf</li>
<li>Added Enterprise Hub postgresql.conf to files monitored for diffs by default
    (ENT-8618)</li>
<li>Added PostgreSQL tunables for Federated Reporting (ENT-8617)</li>
<li>Added lib/templates to packaged assets (ENT-8533)</li>
<li>Added policy to patch apachectl for more robust stopping on Enterprise Hubs
    (ENT-8823)</li>
<li>Added policy update exclusion for directories named .no-distrib
    (ENT-8079)</li>
<li>Added support for &#x27;option&#x27; option in pkg module (CFE-3568)</li>
<li>Added support for Amazon Linux in standalone self upgrade (ENT-8274)</li>
<li>Added support for downloading windows packages as part of self upgrade
    (ENT-8283)</li>
<li>Adjusted MPF to handle rxdirs default from true to false (CFE-951)</li>
<li>755 perms on hub htdocs dir are now enforced (ENT-8212)</li>
<li>Proper owner and perms on docroot are now enforced(ENT-8280)</li>
<li>Prevented def.dir_masterfiles/.no-distrib from being copied
    (ENT-8079)</li>
<li>Cleaned up policy related to versions prior to 3.12 (CFE-3920)</li>
<li>Removed policy deprecated by sys.os_release (CFE-3933)</li>
<li>Updated bundle names and wording to reflect current tooling
    (CFE-3921)</li>
<li>Enabled setting environment attribute in body agent control via augments
    (CFE-3925)</li>
<li>Fixed inclusion of distributed cleanup python files during install
    (ENT-8393)</li>
<li>Fixed inventory for OS on Rocky Linux (ENT-8292)</li>
<li>Fixed promise status from package upgrade when architecture specified in promise
    (CFE-3568)</li>
<li>Made body classes u_kept_successful_command_results inherit_from u_results
    (CFE-3917)</li>
<li>Made cmdb update ignore locks (ENT-8847)</li>
<li>Updating host-specific CMDB data files now happens asynchronously
    (ENT-7357)</li>
<li>Fixed issue with apt_get package module on Ubuntu 22 (CFE-3976)</li>
<li>Fixed parsing of options attribute and added repo alias for repository option in pkg module
    (CFE-3568)</li>
<li>Fixed pkg module parsing input when values include equals (=)
    (CFE-3568)</li>
<li>Warn about missing dependencies for Distributed Cleanup utility
    (ENT-8832)</li>
<li>Fixed AIX watchdog default threshold for number of cf-execd processes
    (CFE-3915)</li>
<li>Stopped lowercasing software inventory on Windows (ENT-8424)</li>
<li>Fixed windows unattended self upgrade on Windows 2008 (ENT-8066)</li>
<li>Invalid feeder dump files are now skipped during import (ENT-8229)</li>
<li>Fixed FR clean bundle when off state (ENT-7969)</li>
<li>Fixed psql not found while FR import (ENT-8353)</li>
<li>Now clean_when_off FR bundle is only run when needed (ENT-8294)</li>
</ul>
<p>3.19.0:</p>
<ul>
<li>Added interpreter attribute to standalone self upgrade package_module bodies
    (CFE-3703, ENT-5752)</li>
<li>Added almalinux as a know derivative of rhel (ENT-7644)</li>
<li>Added class to prevent hub from seeding binary packages for use in self upgrade
    (ENT-7544)</li>
<li>Added cleanup of database and status semaphore when federation target_state is off
    (ENT-7233)</li>
<li>Added custom promise python library</li>
<li>Added distributed_cleanup utility for Federated Reporting (ENT-7215)</li>
<li>Added fallback logic for determining installed software version on Windows
    (ENT-7501)</li>
<li>Added lsmod to well known paths (CFE-3790)</li>
<li>Added script to cleanup artifacts after cfbs build (CFE-3781)</li>
<li>Added self upgrade support for SUSE (ENT-7446)</li>
<li>Added separate classes for controlling autorun inputs and bundles
    The class services_autorun continues to enable both automatic inclusion of .cf
    files in services/autorun and the running of bundles tagged with autorun.
    This change adds the classes services_autorun_inputs and
    services_autorun_bundles for independently enabling addition of .cf files in
    services/autorun and automatic execution of bundles tagged with autorun
    respectively.  (CFE-3715)</li>
<li>Added support for downloading community packages on hub in preparation for binary upgrades</li>
<li>Added variable for excluding files from Policy Analyzer (ENT-7684)</li>
<li>Adjusted badges for 3.18.0 release (ENT-6713)</li>
<li>Adjusted permissions for Mission Portal public tmp files (ENT-7261)</li>
<li>Autorun bundles now run regardless of locks
    Previously, when the autorun feature was enabled to automatically run bundles
    tagged with autorun the bundle actuation was affected by promise locking. The
    effect of this is that agent runs that happen close together would skip running
    bundles run within the last minute. Now autorun bundles no longer wait for a
    lock to expire, they will be actuated each agent execution. Note, promises
    within those bundles have their own locks which still apply.  (CFE-3795)</li>
<li>Dropped un-necessary local variable
    The use of this local variable triggers a bug that prevents datastate() from
    printing. Since the variable is un-necessary, it&#x27;s been removed and the
    parameter is used directly.  (CFE-3776)</li>
<li>Enforced permissions for Postgres log (ENT-7961)</li>
<li>Fixed package module augments settings usage for pre 3.15.3 binaries
    (ENT-7356, ENT-7358)</li>
<li>Fixed path in permissions and ownership promise for application log dir
    (ENT-7731)</li>
<li>Fixed services_autorun_bundles only case (CFE-3799)</li>
<li>Fixup zypper package module script to work properly with interpreter attribute
    (ENT-7442)</li>
<li>Gave cfapache group full access to docroot (ENT-8065)</li>
<li>Insured exported reports from Mission Portal are in the correct location
    (ENT-7465)</li>
<li>Made apache restart more robust (ENT-8045)</li>
<li>Moved httpd.pid to root of httpd workdir (ENT-7966)</li>
<li>Physical Memory (MB) inventory now handles dmidecode MB or GB units
    (ENT-7714)</li>
<li>Promised permissions for Mission Portal application and Apache log files
    This change ensures that both Mission Portal and Apache log files have
    restrictive permissions. Previously this was un-managed.  (ENT-7730)</li>
<li>Reduced scope of report informing of missing systemd service
    (CFE-290, ENT-7360)</li>
<li>Removed build dir from install/dist targets (ENT-7359)</li>
<li>Removed stale CMDB inventory policy (CFE-3712)</li>
<li>Set apache umask to 0177 (ENT-7948)</li>
<li>State changes of systemd services during agent run are now properly registered
    (CFE-3753)</li>
<li>Stopped enforcing permissions of modules in inputs
    This change removes explicit enforcement of permissions for modules in inputs.
    Instead of explicitly enforcing permissions in inputs, we rely on the default
    permissions (600). The previous explicit permissions (755) are un-necessary as
    modules are not executed from within the inputs directory and have resulted in
    permission flip-flopping in some environments. Permissions on modules in the
    modules dir (sys.workdir)/modules are still enforced.  (ENT-7733)</li>
<li>Switched from using package_method generic to default package_module
    for windows software inventory (ENT-2589)</li>
<li>Improved the reliability when detecting a Red Hat system.
    Now if the ID field in /etc/os-release is set to rhel, the redhat_pure class
    will be defined.
    If the variable sys.os_release does not exist, redhat_pure is defined if we have already
    defined redhat and we do not find classes for well known derivatives</li>
<li>rocky, a class defined on Rocky Linux was added to the list of well known derivatives
    (ENT-7628)</li>
<li>Added advisory lock for Federated Reporting operations (ENT-7474)</li>
<li>controls/cf_serverd.cf no longer specifies explicit
    default for bindtointerface and relies on the default
    binding to both :: and 0.0.0.0 on IPV6-enabled hosts
    (ENT-7362)</li>
<li>setup-status.json is no longer being repaired over and over on FR feeder hubs
    (ENT-7967)</li>
</ul>
<p>3.18.0:</p>
<ul>
<li>Added .ps1 to list of file patterns considered during policy update
    (ENT-4094)</li>
<li>Added ability to specify additional directories to add autorun policy from
    (CFE-3524)</li>
<li>Added default cf_version_release of 1 when sys var missing (ENT-6219)</li>
<li>Added description of psql_lock_wait_before_acquisition measurement
    (ENT-6841)</li>
<li>Added inventory of Setgid files and Setgid files that are root owned
    (ENT-6793)</li>
<li>Added inventory of users and hosts allowed to use cf-runagent
    (ENT-6666)</li>
<li>Added measurement of entropy available on linux systems (ENT-6495)</li>
<li>Added missing packages modules scripts in makefile (ENT-6814)</li>
<li>Added new interface for controlling users allowed to initiate cf-agent via cf-runagent
    (CFE-3544)</li>
<li>Added policy for permissions on cf-execd sockets on Enterprise Hubs
    (ENT-6777)</li>
<li>Added redirect to remove index.php from Mission Portal&#x27;s URL
    (ENT-6464)</li>
<li>Added standalone self upgrade capability for Windows agents
    (ENT-6219, ENT-6823)</li>
<li>Added tail & tail_n to standard library (CFE-3558)</li>
<li>Added vars.mpf_admit_cf_runagent_shell to control admission for cf-runagent requests
    (ENT-6673)</li>
<li>Added verbose logfile for msiexec package module file installs
    (ENT-6220, ENT-6824)</li>
<li>Changed default behavior of policy update to keep inputs in sync with masterfiles
    Prior to this change, the default behavior of the MPF was to only ensure that
    files in masterfiles were up to date with the files in inputs. Files in inputs
    that did not exist in masterfiles were left undisturbed. To enable sync
    behavior (a common user expectation) you had to explicitly define
    &#x27;cfengine_internal_purge_policies&#x27;. Now, if you wish to return to the previous
    default behavior, define the class &#x27;cfengine_internal_purge_policies_disabled&#x27;.
    Ticket: (CFE-3662)</li>
<li>Changed msiexec package module install logs to be unique for each msi file
    (ENT-6824)</li>
<li>Disabled TLSv1 by default for Mission Portal&#x27;s web server (ENT-6783)</li>
<li>Do not apply redirect from index.php to internal APIs (ENT-6464)</li>
<li>Enabled packages promises using package_module without bundle def
    (CFE-3504)</li>
<li>Fixed ability to define users authorized for using cf-runagent on policy servers
    (CFE-3546)</li>
<li>Fixed alpine apk packages module to parse names properly (CFE-3585)</li>
<li>Fixed cfengine_mp_fr_handle_duplicate_hostkeys class usage in policy
    (ENT-7094)</li>
<li>Fixed docs describing xdev behavior in depth_search bodies (CFE-3541)</li>
<li>Fixed loading of platform specific inventory on AIX (CFE-3614)</li>
<li>Made Enterprise CMDB data update after policy update (ENT-6788)</li>
<li>Prevent setgid files from causing continual repair related to setuid file inventory
    (ENT-6782)</li>
<li>Removed stale unused copy of u_kept_successful_command body. If you
    receive an error about undefined body, alter your policy to use
    kept_successful_command instead (CFE-3617)</li>
<li>Removed unused plugins directory (CFE-3618)</li>
<li>Renamed python symlink to cfengine-selected-python (CFE-3512)</li>
<li>Shortened Inventory OS attribute to be more readable (ENT-6536)</li>
<li>Suppressed inform output from Enterprise Hub database maintenance operations
    (ENT-6563)</li>
<li>Suppressed output from watchdog on AIX to prevent the mail spool from filling up
    (CFE-3630)</li>
<li>Added ability to specify a list of bundles to run before autorun (for classification) (ENT-6603)</li>
<li>Update policy now moves obstructions (CFE-2984)</li>
<li>Use VBScript to enumerate installed packages (ENT-4669)</li>
<li>add /usr/bin/yum to paths.cf for aix (CFE-3615)</li>
<li>service status on FreeBSD now uses onestatus (CFE-3515)</li>
<li>Guard again enforcing root ownership for CFEngine files on Windows (ENT-4628)
3.17.0:</li>
<li>Added .csv to the list of file extensions considered by default during
        policy update (CFE-3425)</li>
<li>Added ability to extend known paths without modifying vendored policy
    (CFE-3426)</li>
<li>Added apk package module support for alpinelinux (CFE-3451)</li>
<li>Added bundle edit_line converge_prepend with same behavior as bundle
    edit_line converge, but inserting at start of content. (CFE-3483)</li>
<li>Added inventory for Timezone and GMT Offset (ENT-6161)</li>
<li>Added inventory for policy servers (ENT-6212)</li>
<li>Added maintenance policy to update health diagnostics failures table on
        enterprise hubs (ENT-6228)</li>
<li>Added optional handle duplicates step in federated reporting import
    (ENT-6035)</li>
<li>Added replace_uncommented_substrings (ENT-6117)</li>
<li>Added service states "active" and "inactive" for systemd (ENT-6074)</li>
<li>Added watchdog for Windows (ENT-5538)</li>
<li>Adjusted package_module and paths for termux platform (CFE-3288)</li>
<li>Aligned systemd services behavior for service_policy => "enable|enabled|disable|disabled"
    (ENT-6073)</li>
<li>Changed bundle server access_rules to mpf_default_access_rules
    (CFE-3427)</li>
<li>Cleaned up Mission Portal OS variable (inventory_os.description) on RHEL 5 & 6
    (ENT-6124)</li>
<li>De-duplicated license headers (ENT-6040)</li>
<li>Fixed converge edit_line bundle not deleting lines containing marker
    (CFE-3482)</li>
<li>Fixed interpretation of cf-hub --show-license from REPAIRED to KEPT
    (ENT-6473)</li>
<li>Inventory OS variable (inventory_os.description in policy) is now based on os-release</li>
<li>Made git_stash only stash untracked files when capable (CFE-3383)</li>
<li>Moved systemd service management to own bundle (CFE-3381)</li>
<li>Removed delay in refreshing software installed inventory (ENT-6154)</li>
<li>Removed unnecessary packages promise on SuSE (ENT-5480, ENT-6375)</li>
<li>Replaced @ignore with useful doc strings (CFE-3378)</li>
</ul>
<p>3.16.0:</p>
<ul>
<li>/var/cfengine/bin/python symlink creation on SLES was fixed</li>
<li>Added &#x27;data&#x27; shortcut to cf-serverd, defaults to sys.workdir/data</li>
<li>Added inventory for CFEngine Enterprise License information
    (ENT-5089, ENT-5279)</li>
<li>Added inventory of NFS servers in use (from /proc/mounts, on linux)
    (CFE-3259)</li>
<li>Added inventory of license owner on enterprise hubs (ENT-5337)</li>
<li>Added paths support for opensuse (CFE-3283)</li>
<li>Added use of services promise for FR postgresql reconfig in case of
    systemd (ENT-5420)</li>
<li>Added zypper as default package manager for opensuse (CFE-3284)</li>
<li>Admitted ::1 as a query source on Enterprise hubs (ENT-5531)</li>
<li>Aligned unattended self upgrade package map with current state
    (ENT-6010)</li>
<li>Always copy modules from masterfiles (CFE-3237)</li>
<li>Changed DocumentRoot of Mission Portal in httpd.conf to
    <code>/path/to/cfengine/httpd/htdocs/public</code> (ENT-5372)</li>
<li>Changed group for state dir files promise to match defaults per OS
    (CFE-3362)</li>
<li>Changed m_inventory dumping behavior to exclude when values is null
    (ENT-5562)</li>
<li>Corrected application/logs path to outside of docroot (ENT-5255)</li>
<li>Deleted deprecated __PromiseExecutionsLog from process that cleans
    log tables (ENT-5170)</li>
<li>Fixed dmi inventory to prefer sysfs to dmidecode for most variables
    for improved performance and to handle CoreOS hosts that don&#x27;t
    have dmidecode.  (CFE-3249)</li>
<li>Fixed permission flipping when policy analyzer is enabled (ENT-5235)</li>
<li>Fixed runalerts processes promise on non-systemd systems (ENT-5432)</li>
<li>Fixed selection of standard_services when used from non-default
    namespace (ENT-5406)</li>
<li>Fixed system UUID inventory for certain VMWare VMs where dmidecode
    gives UUID bytes in wrong order.  (CFE-3249)</li>
<li>Fixed typo preventing recommendation bundles from running (CFE-3305)</li>
<li>HA setups no longer have flipping permissions on
    /opt/cfengine/notification_scripts</li>
<li>Improved resilience of cron watchdog for linux (CFE-3258)</li>
<li>Inventory refresh is no longer part of agent run on the hub
    (ENT-4864)</li>
<li>Made python symlink fall back to platform-python (CFE-3291)</li>
<li>Made set_variable_values_ini prefer whitespace around = (CFE-3221)</li>
<li>Modified cftransport cleanup to avoid errors (ENT-5555)</li>
<li>Moved &#x27;selinux_enabled&#x27; class to config bundle and namespace scope it</li>
<li>Prevented inventory of unresolved variables for diskfree and loadavg
    (ENT-5190)</li>
<li>Release number was added to MPF tarballs (ENT-5429)</li>
<li>Standard services now considers systemd services in
    ActiveState=activating active (CFE-3238)</li>
<li>Stopped continual repair of ha_enabled semaphore (ENT-4715)</li>
<li>Stopped disabling disabled systemd unit each run when disabled state
    requested (CFE-3367)</li>
<li>Stopped trying to edit fields in manage_variable_values_ini
    (CFE-3372)</li>
<li>Suppressed useless inform output from /bin/true in ec2 inventory
    (ENT-5233)</li>
<li>Switched from hardcoded path to /bin/true to use paths from stdlib
    (ENT-5278)</li>
<li>The zypper module is now fully compatible with Python 3 (CFE-3364)</li>
<li>Whitespace is now allowed at the beginning of ini key-values
    (CFE-3244)</li>
<li>apt_get package module now checks package state (CFE-3233)</li>
</ul>
<p>3.15.0:</p>
<ul>
<li>Added package_module for snap (CFE-2811)</li>
<li>Fixed pkgsrc in case where multiple Prefix paths are returned for pkg_install (CFE-3152)</li>
<li>Fixed pkgsrc module on Solaris/NetBSD (CFE-3151)</li>
<li>Moved zypper package module errors to the cf-agent output (CFE-3154)</li>
<li>Added new class mpf_enable_cfengine_systemd_component_management to enable
      component management on systemd hosts. When defined on systemd hosts policy
      will render systemd unit files in /etc/systemd/system for managed services
      and that all units are enabled unless explicitly disabled. When this class
      is not defined on systemd hosts the policy will not actively mange cfengine
      service units (no change from previous behavior) (CFE-2429)</li>
<li>Fixed detection of service state on FreeBSD (CFE-3167)</li>
<li>Added known paths for true and false on linux
      (ENT-5060)</li>
<li>Fixed path for restorecon on redhat systems to /sbin/restorecon</li>
<li>Added usermod to known paths for redhat systems</li>
<li>Added policy to manage federated reporting with CFEngine Enterprise</li>
<li>Introduced augments variable <code>control_hub_query_timeout</code> to control cf-hub query timeout.
       (ENT-3153)</li>
<li>Added OOTB inventory for IPv6 addresses (sans ::1 loopback)
      (ENT-4987)</li>
<li>Added and transitioned to using master_software_updates shortcut in self upgrade policy
      (ENT-4953)</li>
<li>Added brief descriptions to bodies and bundles in cfe_internal/CFE_cfengine.cf
      (CFE-3220)</li>
<li>Added support for SUSE 11, 12 in standalone self upgrade (ENT-5045, ENT-5152)</li>
<li>Changed policy triggering cleanup of __lastseenhostlogs to target only
      3.12.x, 3.13.x and 3.14.x. From 3.15.0 on the table is absent. (ENT-5052)</li>
<li>Fixed agent disabling on systemd systems (CFE-2429, CFE-3416)</li>
<li>Ensured directory for custom action scripts is present (ENT-5070)</li>
<li>Excluded Enterprise federation policy parsing on incompatible versions
      (CFE-3193)</li>
<li>Extended watchdog for AIX (ENT-4995)</li>
<li>Fixed cleanup of future timestamps from status table
      (ENT-4331, ENT-4992)</li>
<li>Fixed re-spawning of cf-execd or cf-monitord after remediating duplicate concurrent processes
      (CFE-3150)</li>
<li>Replaced /var/cfengine with proper $(sys.*) vars (ENT-4800)</li>
<li>Fixed selection of standard_services when used from non-default namespace (ENT-5406)</li>
</ul>
<p>3.15.0b1:</p>
<ul>
<li>Added continual checking for policy_server state (CFE-3073)</li>
<li>Added monitoring for postgresql lock acquisition times (ENT-4753)</li>
<li>Added support for &#x27;awk&#x27; filters in the FR dump-import process (ENT-4839)</li>
<li>Added support for configuring abortclasses and abortbundleclasses via
    augments (ENT-4823)</li>
<li>Added support for filtering in both dump and import phases of the FR
    ETL process (ENT-4839)</li>
<li>Added support for ordering FR awk and sed scripts (ENT-4839)</li>
<li>Added support for setting periodic package inventory refresh interval
    via augments (CFE-2771)</li>
<li>Changed FR policy to honor target_state properly (ENT-4874)</li>
<li>Copy .awk and .sed files from masterfiles to inputs (ENT-4839)</li>
<li>Fixed Python 3 incompatibility in yum package module</li>
<li>Fixed synchronization of important configuration files from active to
    passive hub (ENT-4944)</li>
<li>Made keys of all types from feeder hubs trusted on a superhub (ENT-4917)</li>
<li>Speeded-up FR import process by merging INSERT INTO statements (ENT-4839)</li>
<li>Suppressed stderr output from lldpctl when using path defined by
    def.lldpctl_json (CFE-3109)</li>
<li>Added SQL to update feeder update timestamp during import (ENT-4776)</li>
<li>Added ssh_home_t type to cftransport .ssh dir (ENT-4906)</li>
<li>fix use of <em>stdlib_path_exists</em> in FR transport_user policy
    bundle (ENT-4906)</li>
<li>partitioned __inventory table for federated reporting (ENT-4842)</li>
<li>psql_wrapper needed full path to psql binary (ENT-4912)</li>
<li>yum package_module gets updates available from online repos if local
    cache fails (CFE-3094)</li>
</ul>
<p>3.14.0:</p>
<ul>
<li>Fixed isvariable syntax error in update_def.cf (CFE-2953)</li>
<li>Added path support for setfacl, timedatectl and journalctl (CFE-3013)</li>
<li>Added trailing slash to access promises expecting directories
    (CFE-3024)</li>
<li>Added scripts and templates for Federated Reporting (ENT-4473)</li>
<li>rpm python module is no longer required to check zypper version</li>
<li>Changed cleanup consumer status SQL query (ENT-4365)</li>
<li>Conditioned use of curl for ec2 metadata cache on curl binary being executable
    (CFE-3049)</li>
<li>Added augments variables to control cf-hub (ENT-4269)</li>
<li>Prevented DB maintenance tasks on a passive High Availability hub (ENT-4706)</li>
<li>Repair outcome for starting cf-monitord or cf-execd is no longer suppressed
    (CFE-2964)</li>
<li>Restrictive permissions on hub install log are now enforced (ENT-4506)</li>
<li>Ensured that asynchronous query API semaphores are writable (ENT-4551)</li>
<li>Fixed standalone_self_upgrade not triggering because of stale data
    (ENT-4317)</li>
<li>Fixed maintenance policy for promise log cleanup to respect history_length_days
    (ENT-4588)</li>
<li>Improved efficiency and error handling of user specified policy update bundle</li>
<li>Log version of Enterprise agent outside of state (ENT-4352)</li>
<li>Added package module for managing windows packages using msiexec (ENT-3719)</li>
<li>Prevented inventorying un-expanded memory values from cf-monitord (ENT-4522)</li>
<li>Prevented performance overhead on hubs that don&#x27;t enable license utilization logging
    (ENT-4333)</li>
<li>Collection status records in the future are now purged (ENT-4362)</li>
<li>Reduced cost of knowing when setopt is available in yum (CFE-2993)</li>
<li>runalerts is now restarted if modified (ENT-4273)</li>
<li>Separated kill signals from restart class to avoid warning (CFE-2974)</li>
<li>Separated termination and observation promises for cf-monitord
    (CFE-2963)</li>
<li>Set default access promises for directories to only share if directory exists
    (CFE-3060)</li>
<li>Set default value for purge_scheduled_reports_older_than_days
    (ENT-4404)</li>
<li>Added more accurate and descriptive daemon classes</li>
<li>collect_window in body server control can now be set from augments
    (ENT-4283)</li>
<li>Guarded vars promises in cfe_internal_enterprise_mission_portal_apache
    Constrain vars promises in cfe_internal_enterprise_mission_portal_apache
    to policy_server.enterprise_edition::, otherwise "cf-promises --show-vars"
    includes a dump of the entire datastate from the "data" variable in
    cfe_internal_enterprise_mission_portal_apache (line over 100K long).
    (CFE-3011)</li>
<li>redhat_pure is no longer defined on Fedora hosts (CFE-3022)</li>
</ul>
<p>3.13.0:</p>
<ul>
<li>Add debian 9 to the self upgrade package map (ENT-4255)</li>
<li>Add &#x27;system-uuid&#x27; to default dmidecode inventory (CFE-2925)</li>
<li>Add inventory of AWS EC2 linux instances (CFE-2924)</li>
<li>Add ubuntu 18 to package map for self upgrade (ENT-4118)</li>
<li>Allow dmidefs inventory to be overridden via augments (CFE-2927)</li>
<li>Analyze yum return code before parsing its output (CFE-2868)</li>
<li>Fixed issue when promise to edit file that does not exist caused "promise
    not kept" condition (ENT-3965)</li>
<li>Avoid trying to read /proc/meminfo when it doesn&#x27;t exist (CFE-2922)</li>
<li>Avoid use of $(version) for package_version in legacy implementation
    (ENT-3963)</li>
<li>Cleanup old report data relative to the most recent changetimestamp
    (ENT-4807)</li>
<li>Clear <code>__lastseenhostslogs</code> every 5 minutes. (ENT-3550)</li>
<li>Configure Enterprise hub pull collection schedule via augments
    (ENT-3834)</li>
<li>Configure agent_expireafter from augments (ENT-4308)</li>
<li>Create desired version tracking data when necessary (ENT-3937)</li>
<li>Cron based watchdog for cf-execd on AIX (ENT-3963)</li>
<li>Detect systemd service enablement for non native services (CFE-2932)</li>
<li>Document how def.acl is used and how to configure it (CFE-2861)</li>
<li>Fix augments control state paths to work on windows (ENT-3839)</li>
<li>Fix package_latest detecting larger version in some cases (CFE-1743)</li>
<li>Fix standalone self upgrade when path contains spaces (ENT-4117)</li>
<li>Fix unattended self upgrade on AIX (ENT-3972)</li>
<li>Fix services starting on windows (ENT-3883)</li>
<li>Improve performance of enterprise license utilization logging</li>
<li>Inventory Memory on HPUX (ENT-4188)</li>
<li>Inventory Physical Memory MB when dmidecode is found (CFE-2896)</li>
<li>Inventory Setuid Files (ENT-4158)</li>
<li>Inventory memory on Windows (ENT-4187)</li>
<li>Make recommendations about postgresql.conf (ENT-3958)</li>
<li>Only consider files that exist for rotation (ENT-3946)</li>
<li>Prevent noise when a service that should be disabled is missing.
    (CFE-2690)</li>
<li>Prevent standalone self upgrade from triggering un-necessarily
    (ENT-4092)</li>
<li>Remove Design Center related policies
    Design center never left beta and has been deprecated. Supporting policies have
    been removed. If you wish to continue using design center sketches you must
    incorporate them into inputs and the bundlesequence manually.
    (ENT-4050)</li>
<li>Remove unicode characters (ENT-3823)</li>
<li>Remove templates for deprecated components (ENT-3781)</li>
<li>Remove un-necessary agent run during self upgrade (ENT-4116)</li>
<li>Slackware package module support (CFE-2827)</li>
<li>Specify scope => "namespace" when using persistent classes (CFE-2860)</li>
<li>Store the epoch of packages in cache db with zypper</li>
<li>Sync cf-runalerts override unit template with package (ENT-3923)</li>
<li>Update policy can now skip local copy optimization on policy servers
    (CFE-2932)</li>
<li>Updated yum package module to take arbitrary options (ENT-4177)</li>
<li>Use default for package arch on aix (ENT-3963)</li>
<li>Use rpmvercmp for version comparison on AIX (ENT-3963)</li>
<li>Users allowed to request execution via cf-runagent can be configured
    (ENT-4054)</li>
<li>apt_get package module includes held packages when listing updates
    (CFE-2855)</li>
</ul>
<p>3.12.0b1:</p>
<ul>
<li>Avoid executing self upgrade policy unnecessarily (ENT-3592)</li>
<li>Add amazon_linux class to yum package module</li>
<li>Introduce ability to set policy update bundle via augments (CFE-2687)</li>
<li>Localize delete tidy in ha update policy (ENT-3659)</li>
<li>Improve context notifying user of missing policy update bundle
    (ENT-3624)</li>
<li>Configure ignore_missing_inputs and ignore_missing_bundles via augments
    (CFE-2773)</li>
<li>Change class identifying runagent initiated executions from cfruncommand to cf_runagent_initated</li>
<li>Support enablerepo and disablerepo options in yum package_module
    (CFE-2806)</li>
<li>Fix cf-runagent during 3.7.x -> 3.10.x migration
    (CFE-2776, CFE-2781, CFE-2782)</li>
<li>Makes it possible to tune policy master_location via augments in update policy
    (ENT-3692)</li>
<li>Fix inventory for total memory on AIX (CFE-2797)</li>
<li>Do not manage redis since it&#x27;s no longer used (ENT-2797)</li>
<li>Server control maxconnections can be configured via augments
    (CFE-2660)</li>
<li>Allow configuration of allowlegacyconnects from augments (ENT-3375)</li>
<li>Fix ability for zypper package_module to downgrade packages</li>
<li>Splaytime in body executor control can now be configured via augments
    (CFE-2699)</li>
<li>Add maintenance policy to refresh events table on enterprise hubs
    (ENT-3537)</li>
<li>Add apache config for new LDAP API (ENT-3265)</li>
<li>update.cf bundlesequence can be configured via augments (CFE-2521)</li>
<li>Update policy inputs can be extended via augments (CFE-2702)</li>
<li>Add oracle linux support to standalone self upgrade</li>
<li>Add bundle to track component variables to restart when necessary
    (CFE-2326)</li>
<li>Retention of files found in log directories can now be configured via augments
    (CFE-2539)</li>
<li>Allow multiple sections in insert_ini_section (CFE-2721)</li>
<li>Add lines_present edit_lines bundle</li>
<li>Schedule in body executor control can now be configured via augments
    (CFE-2508)</li>
<li>Include scheduled report assets in self maintenance (ENT-3558)</li>
<li>Remove unused body action aggregator and body file_select folder</li>
<li>Remove unused body process_count check_process</li>
<li>Prevent yum from locking in package_methods when possible
    (CFE-2759)</li>
<li>Render variables tagged for inventory from agent host_info_report
    (CFE-2750)</li>
<li>Make apt_get package module work with repositories containing spaces in the label
    (ENT-3438)</li>
<li>Allow hubs to collect from themselves over loopback (ENT-3329)</li>
<li>Log file max size and rotation limits can now be configured via augments
    (CFE-2538)</li>
<li>Change: Do not silence Enterprise hub maintenance</li>
<li>Ensure HA standby hubs have am_policy_hub state marker (ENT-3328)</li>
<li>Add support for 32bit rpms in standalone self upgrade (ENT-3377)</li>
<li>Add enterprise maintenance bundles to host info report (ENT-3537)</li>
<li>Removed unnecessary promises for OOTB package inventory</li>
<li>Add external watchdog support for stuck cf-execd (ENT-3251)</li>
<li>Be less noisy when a promised service is not found (CFE-2690)</li>
<li>Ignore empty options in apt_get module (CFE-2685)</li>
<li>Add postgres.log to enterprise log file rotation (ENT-3191)</li>
<li>Removed unnecessary support for including 3.6 controls</li>
<li>Fix systemctl path detection</li>
<li>Policy Release Id is now inventoried by default (CFE-2097)</li>
<li>Fix to frequent logging of enterprise license utilization (ENT-3390)</li>
<li>Maintain access to exported CSV reports in older versions (ENT-3572)</li>
<li>cf-execd service override template now only kills cf-execd on stop
    (ENT-3395)</li>
<li>Fix self upgrade for hosts older than 3.7.4 (ENT-3368)</li>
<li>Avoid self upgrade from triggering during bootstrap (ENT-3394)</li>
<li>Add json templates for rendering serial and multiline data (CFE-2713)</li>
<li>Removed unused libraries and controls</li>
<li>Fixed an error in the file_make_mustache_*, incorrect variable name used
    (CFE-2714)</li>
</ul>
<p>3.11.0:</p>
<ul>
<li>Rename enable_client_initiated_reporting to client_initiated_reporting_enabled</li>
<li>Directories for ubuntu 16 and centos 7 should exist in master_software_updates
    (ENT-3136)</li>
<li>Fix: Automatic client upgrades for deb hosts</li>
<li>Add AIX OOTB oslevel inventory (ENT-3117)</li>
<li>Disable package inventory via modules on redhat like systems with unsupported python versions
    (CFE-2602)</li>
<li>Make stock policy update more resiliant (CFE-2587)</li>
<li>Configure networks allowed to initiate report collection (client initiated reporting) via augments (#910)
    (CFE-2624)</li>
<li>apt_get package module: Fix bug which prevented updates
    from being picked up if there was more than one source listed in the
    &#x27;apt upgrade&#x27; output, without a comma in between (CFE-2605)</li>
<li>Enable specification of monitoring_include via augments (CFE-2505)</li>
<li>Configure call_collect_interval from augments (enable_client_initiated_reporting) (#905)
    (CFE-2623)</li>
<li>Add templates shortcut (CFE-2582)</li>
<li>Behaviour change: when used with CFEngine 3.10.0 or greater,
    bundles set_config_values() and set_line_based() are appending a
    trailing space when inserting a configuration option with empty value
    (CFE-2466)</li>
<li>Add default report collection exclusion based on promise handle
    (ENT-3061)</li>
<li>Fix ability to select INI region with metachars (CFE-2519)</li>
<li>Change: Verify transfered files during policy update</li>
<li>Change select_region INI_section to match end of section or end of file
    (CFE-2519)</li>
<li>Add class to enable post transfer verrification during policy updates</li>
<li>Add: prunetree bundle to stdlib
    The prunetree bundle allws you to delete files and directories up to a
    sepcified depth older than a specified number of days</li>
<li>Do not symlink agents to /usr/local/bin on coreos (ENT-3047)</li>
<li>Add: Ability to set default_repository via augments</li>
<li>Enable settig def.max_client_history_size via augments (CFE-2560)</li>
<li>Change self upgrade now uses standalone policy (ENT-3155)</li>
<li>Fix apt_get package module incorrectly using interactive mode</li>
<li>Add ability to append to bundlesequnece with def.json (CFE-2460)</li>
<li>Enable paths to POSIX tools by default instead of native tools</li>
<li>Remove bundle agent cfe_internal_bins (CFE-2636)</li>
<li>Include previous_state and untracked reports when client clear a buildup of unreported data
    (ENT-3161)</li>
<li>Fix command to restart apache on config change (ENT-3134)</li>
<li>cf-serverd listens on ipv4 and ipv6 by default (CFE-528)</li>
<li>FixesMake apt_get module compatible with Ubuntu 16.04 (CFE-2445)</li>
<li>Fix rare bug that would sometimes prevent redis-server from launching</li>
<li>Add oslevel to well known paths (ENT-3121)</li>
<li>Add policy to track CFEngine Enterprise license utilization
    (ENT-3186)</li>
<li>
<p>Ensure MP SSL Cert is readable (ENT-3050)</p>
</li>
<li>
<p>fix case where Apache and Mission Portal Application log files world were readable (bsc#1197031, CVE-2021-44216)</p>
</li>
<li>
<p>fix case where PostgreSQL log file world were readable (bsc#1197029, CVE-2021-44215)</p>
</li>
<li>
<p>Update to 3.10.3 (FATE#323149, bsc#1086475)</p>
</li>
</ul>

    

    <h2>Patch Instructions:</h2>
    <p>
        To install this SUSE Moderate update use the SUSE recommended
        installation methods like YaST online_update or "zypper patch".<br/>

        Alternatively you can run the command listed for your product:
    </p>
    <ul class="list-group">
        
            <li class="list-group-item">
                Advanced Systems Management Module 12
                
                    
                        <br/>
                        <code>zypper in -t patch SUSE-SLE-Module-Adv-Systems-Management-12-2023-2126=1</code>
                    
                    
                
            </li>
        
            <li class="list-group-item">
                SUSE Linux Enterprise Software Development Kit 12 SP5
                
                    
                        <br/>
                        <code>zypper in -t patch SUSE-SLE-SDK-12-SP5-2023-2126=1</code>
                    
                    
                
            </li>
        
    </ul>

    <h2>Package List:</h2>
    <ul>
        
            
                <li>
                    Advanced Systems Management Module 12 (ppc64le s390x x86_64)
                    <ul>
                        
                            <li>cfengine-3.21.0-17.3.1</li>
                        
                            <li>libpromises3-debuginfo-3.21.0-17.3.1</li>
                        
                            <li>cfengine-debugsource-3.21.0-17.3.1</li>
                        
                            <li>cfengine-debuginfo-3.21.0-17.3.1</li>
                        
                            <li>libpromises3-3.21.0-17.3.1</li>
                        
                    </ul>
                </li>
            
                <li>
                    Advanced Systems Management Module 12 (noarch)
                    <ul>
                        
                            <li>cfengine-masterfiles-3.21.0-10.3.1</li>
                        
                    </ul>
                </li>
            
        
            
                <li>
                    SUSE Linux Enterprise Software Development Kit 12 SP5 (aarch64 ppc64le s390x x86_64)
                    <ul>
                        
                            <li>cfengine-debuginfo-3.21.0-17.3.1</li>
                        
                            <li>cfengine-debugsource-3.21.0-17.3.1</li>
                        
                            <li>libpromises-devel-3.21.0-17.3.1</li>
                        
                    </ul>
                </li>
            
        
    </ul>

    
        <h2>References:</h2>
        <ul>
            
                
                    <li>
                        <a href="https://www.suse.com/security/cve/CVE-2021-44215.html">https://www.suse.com/security/cve/CVE-2021-44215.html</a>
                    </li>
                
            
                
                    <li>
                        <a href="https://www.suse.com/security/cve/CVE-2021-44216.html">https://www.suse.com/security/cve/CVE-2021-44216.html</a>
                    </li>
                
            
                
                    <li>
                        <a href="https://bugzilla.suse.com/show_bug.cgi?id=1086475">https://bugzilla.suse.com/show_bug.cgi?id=1086475</a>
                    </li>
                
            
                
                    <li>
                        <a href="https://bugzilla.suse.com/show_bug.cgi?id=1197029">https://bugzilla.suse.com/show_bug.cgi?id=1197029</a>
                    </li>
                
            
                
                    <li>
                        <a href="https://bugzilla.suse.com/show_bug.cgi?id=1197031">https://bugzilla.suse.com/show_bug.cgi?id=1197031</a>
                    </li>
                
            
                
                    <li>
                        <a href="https://jira.suse.com/browse/SLE-24222">https://jira.suse.com/browse/SLE-24222</a>
                    </li>
                
            
        </ul>
    
</div>