Fix check for whether postmaster is running as a Windows service. REL9_1_STABLE
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Mon, 26 Sep 2016 06:19:20 +0000 (09:19 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Mon, 26 Sep 2016 06:23:01 +0000 (09:23 +0300)
commitfb66ceda17884cc24183b045670ef17627aff936
treef8bebb8a80b351265e89b083cb81829e6493fc23
parentf83b72ea4a4a6d02e7d2b26a26973439b741172a
Fix check for whether postmaster is running as a Windows service.

If postmaster is launched with a restricted security token, with the
"Log in as Service" privilege explicitly removed, the token will contain
SECURITY_SERVICE_RID with the SE_GROUP_USE_FOR_DENY_ONLY flag, and without
the SE_GROUP_ENABLED flag. pgwin32_is_service() was fooled by that, and
thought that it's running as a service. Fix to check for the
SE_GROUP_ENABLED flag, like we do in pgwin32_is_admin().

Patch by Michael Paquier, per Breen Hagan's report and analysis. Backpatch
to all supported versions.

Bug: #13755
Discussion: <20151104062315.2745.67143@wrigleys.postgresql.org>
src/backend/port/win32/security.c