fsck: split ".gitmodules too large" error from parse failure

Since ed8b10f631 (fsck: check .gitmodules content, 2018-05-02), we'll report a gitmodulesParse error for two conditions: - a .gitmodules entry is not syntactically valid - a .gitmodules entry is larger than core.bigFileThreshold with the intent that we can detect malicious files and protect downstream clients. E.g., from the issue in 0383bbb901 (submodule-config: verify submodule names as paths, 2018-04-30). But these conditions are actually quite different with respect to that bug: - a syntactically invalid file cannot trigger the problem, as the victim would barf before hitting the problematic code - a too-big .gitmodules _can_ trigger the problem. Even though it is obviously silly to have a 500MB .gitmodules file, the submodule code will happily parse it if you have enough memory. So it may be reasonable to configure their severity separately. Let's add a new class for the "too large" case to allow that. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Jul 13, 2018 at 15:39 UTC 0d68764d94958aece0355d5d27f383e7d4de2e58
1 file changed +2 -1
fsck.c
+2 -1
@@ -63,6 +63,7 @@ static struct oidset gitmodules_done = OIDSET_INIT;
63 FUNC(GITMODULES_MISSING, ERROR) \
64 FUNC(GITMODULES_BLOB, ERROR) \
65 FUNC(GITMODULES_PARSE, ERROR) \
66 + FUNC(GITMODULES_LARGE, ERROR) \
67 FUNC(GITMODULES_NAME, ERROR) \
68 FUNC(GITMODULES_SYMLINK, ERROR) \
69 /* warnings */ \
@@ -1005,7 +1006,7 @@ static int fsck_blob(struct blob *blob, const char *buf,
1006 * that an error.
1007 */
1008 return report(options, &blob->object,
1008 - FSCK_MSG_GITMODULES_PARSE,
1009 + FSCK_MSG_GITMODULES_LARGE,
1010 ".gitmodules too large to parse");
1011 }
1012