[PATCH 2/2] attr.c: check if .gitattributes is a file before parsing it
- From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
- Date
- Mar 3, 2017, 09:42 UTC
- Message-ID
- <20170303094252.11706-3-pclouds@gmail.com>
- In-Reply-To
- <20170303094252.11706-1-pclouds@gmail.com>
Similar to the previous patch, this is about better error messages when .gitattributes happens to be a directory.
FWIW .gitignore code is also checked. There open() is used instead and
open("dir") does not fail on Linux. But the next read should fail with
EISDIR, which is a pretty good clue already. No idea how open() on
Windows behaves.
---
attr.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)diff --git a/attr.c b/attr.c index 5493bff224..34b6a6b9a8 100644 --- a/attr.c +++ b/attr.c @@ -703,11 +703,17 @@ void git_attr_set_direction(enum git_attr_direction new_direction, static struct attr_stack *read_attr_from_file(const char *path, int macro_ok) { - FILE *fp = fopen(path, "r"); + FILE *fp; struct attr_stack *res; char buf[2048]; int lineno = 0; + if (is_not_file(path)) { + warning(_("'%s' is not a file"), path); + return NULL; + } + + fp = fopen(path, "r"); if (!fp) { if (errno != ENOENT && errno != ENOTDIR) warn_on_inaccessible(path);
-- 2.11.0.157.gd943d85