(maint) Remove ext/rack/README reference from debian/rules

In a previous commit, files in ext/rack/files were moved up a directory to
ext/rack and some unneeded files were removed. Among the removed files was
README, which was unfortunately still used in the debian/rules file as a
supplemental doc for the puppetmaster-passenger package. The lack of
ext/rack/README caused the rules evaluation to fail, which caused debian
packaging to fail. This commit addresses that by removing the README references
from the debian/rules file.
Merge pull request #2070 from haus/maint/stable/fix_rules_for_missing_readme

(maint) Remove ext/rack/README reference from debian/rules
(maint) Rename expected apache vhost in debian/rules

In a previous commit, files in ext/rack/files were moved up a directory to
ext/rack and some files were renamed. Among the renamed files was
apache2.conf, which was renamed to example-passenger-vhost.conf.  This caused
the rules evaluation to fail, which caused debian packaging to fail. This
commit addresses that by renaming the vhost references in the debian/rules
file.
Merge pull request #2071 from haus/maint/stable/fix_rules_for_renamed_vhost

(maint) Rename expected apache vhost in debian/rules
(#23124) Fix: Incorrect Exit Codes from Windows Exec

This fixes the incorrect exitstatus being returned when a process
is run on Windows. There is an outstanding bug with Ruby
(https://bugs.ruby-lang.org/issues/8083) where it truncates the
exit codes to one byte values. Due to this an exit code of 3010
is currently truncated to 194.

Puppet accurately receives the exit code but was then ignoring
that and only returning the output. $CHILD_STATUS was then being
queried, and due to the aforementioned bug, was returning the
truncated return code. This means that anything above 256 would
be returned incorrectly.

This removes the private method Puppet::Util::SUIDManager.run_and_capture()
in favor of a more simplified call to Puppet::Util::Execution.execute().
This was done as run_and_capture was only being called by
Puppet::Provider::Exec.run(). This also removes the call to $CHILD_STATUS
which may clear up some other race conditions with capturing the proper
$CHILD_STATUS.

Paired with Andrew Parker <andy@puppetlabs.com>
(Maint) Remove commented out tests

The run_and_capture method was removed, so the tests aren't needed
anymore.
(#23124) Move ProcessOutput to Puppet::Util::Execution

The ProcessOutput class was lonely over in the puppet/process directory.
Not only did it have the wrong name, but it had no friends. This moves
it to Puppet::Util::Execution so that it can be with its friends and
also gives it some more documentation and a public tag so that others
can know how great it is.
(Maint) Fixup docs for Puppet::Util::Execution

Mark public things public and figure out what the uid and gid types are
supposed to be.
(#23124) Remove 194 exit code from windows/msi package providers

This removes the 194 exit code which would be returned from
$CHILD_STATUS when the exit code is 3010 (3010 % 256). With the
fixes to return the actual exitstatus code, this retun code is
no longer necessary.

Paired with Andrew Parker <andy@puppetlabs.com>
(#2538) Puppet::Util::Execution.execute should also return exit status

Many of the commit for #23124 also fix #2538, but this fixes other
places that were using $CHILD_STATUS that had called execute().

They are now using the exit status of the command, which closes 2538.

Paired with Andrew Parker <andy@puppetlabs.com>
(#23124) Merge branch 'ticket/stable/23124-exit_codes_on_windows' into stable
Revert "(#23124) Merge branch 'ticket/stable/23124-exit_codes_on_windows' into stable"

Reverting as this should have been targeted at 3.4.0 (on master).

This reverts commit 1f3ea533b06ccf5188f5dd371da722e7c84dc904, reversing
changes made to f4c7e8b7a67ae5ae60b0be12b97f12b6c3673291.
(#23183) Use FFI to manage pointers in RootCerts module

Previously, we made assumptions about the layout of the CERT_CONTEXT
structure, specifically that PCERT_INFO (pointer to CERT_CONTEXT) was an
unsigned 32-bit integer ('L'), and magically accessed the size of the
returned structure as arr[2]. We were also memcpy 40-bytes which was
larger than the size of the CERT_CONTEXT structure in both x86 and x64 and
was the cause of infrequent segmentation faults.

This commit uses FFI to define the layout of the CERT_CONTEXT structure, uses
named fields, e.g. [:cbCertEncoded], to access offsets within the structure,
and uses the FFI::Pointer#null? method to check for NULL pointer.

Note that we use FFI::Pointer and not MemoryPointer, because the
CertEnumCertificatesInStore function is responsible for freeing the
previous CERT_CONTEXT pointer, not us.

Also in the motto of "don't stub what you don't own" it exercises the Win32
APIs to make the tests more meaningful.
Merge pull request #2079 from joshcooper/ticket/stable/23183-ffi-rootcerts

(#23183) Use FFI to manage pointers in RootCerts module