Merge branch 'rj/submodule-fsck-skip'
"fsck.skipList" did not prevent a blob object listed there from being inspected for is contents (e.g. we recently started to inspect the contents of ".gitmodules" for certain malicious patterns), which has been corrected. * rj/submodule-fsck-skip: fsck: check skiplist for object in fsck_blob()maint
commit
a9e7fe96cc
13
fsck.c
13
fsck.c
|
@ -316,6 +316,13 @@ static void append_msg_id(struct strbuf *sb, const char *msg_id)
|
||||||
strbuf_addstr(sb, ": ");
|
strbuf_addstr(sb, ": ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int object_on_skiplist(struct fsck_options *opts, struct object *obj)
|
||||||
|
{
|
||||||
|
if (opts && opts->skiplist && obj)
|
||||||
|
return oid_array_lookup(opts->skiplist, &obj->oid) >= 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
__attribute__((format (printf, 4, 5)))
|
__attribute__((format (printf, 4, 5)))
|
||||||
static int report(struct fsck_options *options, struct object *object,
|
static int report(struct fsck_options *options, struct object *object,
|
||||||
enum fsck_msg_id id, const char *fmt, ...)
|
enum fsck_msg_id id, const char *fmt, ...)
|
||||||
|
@ -327,8 +334,7 @@ static int report(struct fsck_options *options, struct object *object,
|
||||||
if (msg_type == FSCK_IGNORE)
|
if (msg_type == FSCK_IGNORE)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (options->skiplist && object &&
|
if (object_on_skiplist(options, object))
|
||||||
oid_array_lookup(options->skiplist, &object->oid) >= 0)
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (msg_type == FSCK_FATAL)
|
if (msg_type == FSCK_FATAL)
|
||||||
|
@ -998,6 +1004,9 @@ static int fsck_blob(struct blob *blob, const char *buf,
|
||||||
return 0;
|
return 0;
|
||||||
oidset_insert(&gitmodules_done, &blob->object.oid);
|
oidset_insert(&gitmodules_done, &blob->object.oid);
|
||||||
|
|
||||||
|
if (object_on_skiplist(options, &blob->object))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (!buf) {
|
if (!buf) {
|
||||||
/*
|
/*
|
||||||
* A missing buffer here is a sign that the caller found the
|
* A missing buffer here is a sign that the caller found the
|
||||||
|
|
Loading…
Reference in New Issue