The main thing to catch here is when fopen() is called on a directory. It's safe even without this change because a few lines earlier we do check if "filename" is a regular file. Regardless, let's stay on the safe side in case somebody changes those lines. Unconditionally printing to stderr by warn_on_inaccessible() should be fine, because the caller does unconditional fprintf(stderr, too, no checking for quiet option or anything. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- bisect.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bisect.c b/bisect.c index 03af06c66c..6dc4dc9397 100644 --- a/bisect.c +++ b/bisect.c @@ -669,8 +669,11 @@ static int is_expected_rev(const struct object_id *oid) return 0; fp = fopen(filename, "r"); - if (!fp) + if (!fp) { + if (errno != ENOENT) + warn_on_inaccessible(filename); return 0; + } if (strbuf_getline_lf(&str, fp) != EOF) res = !strcmp(str.buf, oid_to_hex(oid)); -- 2.11.0.157.gd943d85