gc: call fscanf() with %<len>s, not %<len>c, when reading hostname
commitafe2fab72c3151d02314ab5ef3708cd203c499e5
authorJunio C Hamano <gitster@pobox.com>
Sun, 17 Sep 2017 03:16:55 +0000 (17 12:16 +0900)
committerJunio C Hamano <gitster@pobox.com>
Sun, 17 Sep 2017 04:21:44 +0000 (17 13:21 +0900)
tree30a77122430359e18c462938b8f2188d7e12e109
parentda25bdb7766c01665500cf7c7b75e76ea1f28b49
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.

Helped-by: A. Wilcox <awilfox@adelielinux.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/gc.c