git/compat
Johannes Schindelin 03a4e46d12 mingw: special-case administrators even more
The check for dubious ownership has one particular quirk on Windows: if
running as an administrator, files owned by the Administrators _group_
are considered owned by the user.

The rationale for that is: When running in elevated mode, Git creates
files that aren't owned by the individual user but by the Administrators
group.

There is yet another quirk, though: The check I introduced to determine
whether the current user is an administrator uses the
`CheckTokenMembership()` function with the current process token. And
that check only succeeds when running in elevated mode!

Let's be a bit more lenient here and look harder whether the current
user is an administrator. We do this by looking for a so-called "linked
token". That token exists when administrators run in non-elevated mode,
and can be used to create a new process in elevated mode. And feeding
_that_ token to the `CheckTokenMembership()` function succeeds!

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2025-03-25 04:45:56 -07:00
..
fsmonitor global: trivial conversions to fix `-Wsign-compare` warnings 2024-12-06 20:20:04 +09:00
linux
…
nedmalloc compat: disable -Wunused-parameter in 3rd-party code 2024-08-28 09:51:18 -07:00
poll global: mark code units that generate warnings with `-Wsign-compare` 2024-12-06 20:20:02 +09:00
regex compat/regex: explicitly ignore "-Wsign-compare" warnings 2024-12-06 20:20:01 +09:00
simple-ipc Merge branch 'ak/typofixes' 2024-10-25 14:02:04 -04:00
stub compat: mark unused parameters in win32/mingw functions 2024-08-28 09:51:18 -07:00
vcbuild mingw.c: Fix complier warnings for a 64 bit msvc 2024-10-17 14:42:27 -04:00
win32 compat/win32: fix -Wsign-compare warning in "wWinMain()" 2024-12-06 20:20:01 +09:00
.gitattributes
…
access.c
…
apple-common-crypto.h
…
basename.c compat/win32: fix const-correctness with string constants 2024-06-07 10:30:52 -07:00
bswap.h bswap.h: squelch potential sparse -Wcast-truncate warnings 2025-01-21 08:42:55 -08:00
compiler.h mingw.c: Fix complier warnings for a 64 bit msvc 2024-10-17 14:42:27 -04:00
disk.h compat: drop inclusion of <git-compat-util.h> 2024-02-24 14:37:41 -08:00
fileno.c
…
fopen.c
…
hstrerror.c
…
inet_ntop.c
…
inet_pton.c
…
memmem.c
…
mingw.c mingw: special-case administrators even more 2025-03-25 04:45:56 -07:00
mingw.h compat: mark unused parameters in win32/mingw functions 2024-08-28 09:51:18 -07:00
mkdir.c
…
mkdtemp.c
…
mmap.c
…
msvc.c
…
msvc.h
…
nonblock.c
…
nonblock.h
…
obstack.c
…
obstack.h
…
open.c
…
pread.c
…
precompose_utf8.c path: drop `git_path_buf()` in favor of `repo_git_path_replace()` 2025-02-07 09:59:22 -08:00
precompose_utf8.h
…
qsort_s.c
…
regcomp_enhanced.c
…
setenv.c
…
sha1-chunked.c hash-ll: merge with "hash.h" 2024-06-14 10:26:33 -07:00
sha1-chunked.h
…
snprintf.c
…
stat.c
…
strcasestr.c
…
strdup.c
…
strlcpy.c
…
strtoimax.c
…
strtoumax.c
…
terminal.c global: trivial conversions to fix `-Wsign-compare` warnings 2024-12-06 20:20:04 +09:00
terminal.h
…
unsetenv.c
…
win32.h
…
win32mmap.c global: mark code units that generate warnings with `-Wsign-compare` 2024-12-06 20:20:02 +09:00
winansi.c global: mark code units that generate warnings with `-Wsign-compare` 2024-12-06 20:20:02 +09:00
zlib-compat.h compat/zlib: allow use of zlib-ng as backend 2025-01-28 13:03:23 -08:00