summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-09-17 12:16:55 +0900
committerJunio C Hamano <gitster@pobox.com>2017-09-17 13:21:44 +0900
commitafe2fab72c3151d02314ab5ef3708cd203c499e5 (patch)
tree30a77122430359e18c462938b8f2188d7e12e109
parentda25bdb7766c01665500cf7c7b75e76ea1f28b49 (diff)
downloadgit-aw/gc-lockfile-fscanf-fix.tar.gz
gc: call fscanf() with %<len>s, not %<len>c, when reading hostnameaw/gc-lockfile-fscanf-fix
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. Helped-by: A. Wilcox <awilfox@adelielinux.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/gc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/builtin/gc.c b/builtin/gc.c
index 5befd518fd..22b35a627e 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -244,7 +244,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 =