mirror of
https://github.com/git/git.git
synced 2026-01-22 08:27:53 +00:00
gc: call fscanf() with %<len>s, not %<len>c, when reading hostname
Earlier in this codepath, we (ab)used "%<len>c" to read the hostname
recorded in the lockfile into locking_host[HOST_NAME_MAX + 1] while
substituting <len> with the actual value of HOST_NAME_MAX.
This turns out to be incorrect, as it is an instruction to read
exactly the specified number of bytes. Because we are trying to
read at most that many bytes, we should be using "%<len>s" instead.
[jes: this is a backport of afe2fab72c (gc: call fscanf() with %<len>s,
not %<len>c, when reading hostname, 2017-09-17) to the vs2017_vcpkg
branch, as it turns out that MSVC's fscanf() is more correct than GNU
libc's, and returns only 1 correctly scanned field instead of the
2 expected by Git, making t6500-gc.sh fail.]
Helped-by: A. Wilcox <awilfox@adelielinux.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
committed by
Johannes Schindelin
parent
e696826e27
commit
cd8ea9aa7a
@@ -257,7 +257,7 @@ static const char *lock_repo_for_gc(int force, pid_t* ret_pid)
|
||||
int should_exit;
|
||||
|
||||
if (!scan_fmt)
|
||||
scan_fmt = xstrfmt("%s %%%dc", "%"SCNuMAX, HOST_NAME_MAX);
|
||||
scan_fmt = xstrfmt("%s %%%ds", "%"SCNuMAX, HOST_NAME_MAX);
|
||||
fp = fopen(pidfile_path, "r");
|
||||
memset(locking_host, 0, sizeof(locking_host));
|
||||
should_exit =
|
||||
|
||||
Reference in New Issue
Block a user