From 9f03ebd14b6beb00a9bed52c0568a13f8d5ebb08 Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Mon, 29 Nov 2021 13:44:42 -0500 Subject: object: introduce a raw content validation function Users may want to validate raw object content; provide them a function to do so. --- src/object.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src') diff --git a/src/object.c b/src/object.c index 7e6ad3aa2..7bc256fce 100644 --- a/src/object.c +++ b/src/object.c @@ -567,3 +567,35 @@ bool git_object__is_valid( return true; } + +int git_object_rawcontent_is_valid( + int *valid, + const char *buf, + size_t len, + git_object_t type) +{ + git_object *obj = NULL; + int error; + + GIT_ASSERT_ARG(valid); + GIT_ASSERT_ARG(buf); + + /* Blobs are always valid; don't bother parsing. */ + if (type == GIT_OBJECT_BLOB) { + *valid = 1; + return 0; + } + + error = git_object__from_raw(&obj, buf, len, type); + git_object_free(obj); + + if (error == 0) { + *valid = 1; + return 0; + } else if (error == GIT_EINVALID) { + *valid = 0; + return 0; + } + + return error; +} -- cgit v1.2.1