diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2019-01-20 20:38:25 +0000 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2019-01-25 22:31:01 +0000 |
commit | 3aa6d96a230d15620df0c6ea2ecaae54f5b49941 (patch) | |
tree | 1c99882454979a8778f548db62a225c3f32be625 | |
parent | 759502ed30574d177b00997e106be22875ad9bd5 (diff) | |
download | libgit2-3aa6d96a230d15620df0c6ea2ecaae54f5b49941.tar.gz |
tree: cast filename length in git_tree__parse_raw
Quiet down a warning from MSVC about how we're potentially losing data.
Ensure that we're within a uint16_t before we do.
-rw-r--r-- | src/tree.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/tree.c b/src/tree.c index d3b11f8c7..466180451 100644 --- a/src/tree.c +++ b/src/tree.c @@ -403,7 +403,7 @@ int git_tree__parse_raw(void *_tree, const char *data, size_t size) if ((nul = memchr(buffer, 0, buffer_end - buffer)) == NULL) return tree_error("failed to parse tree: object is corrupted", NULL); - if ((filename_len = nul - buffer) == 0) + if ((filename_len = nul - buffer) == 0 || filename_len > UINT16_MAX) return tree_error("failed to parse tree: can't parse filename", NULL); if ((buffer_end - (nul + 1)) < GIT_OID_RAWSZ) @@ -415,7 +415,7 @@ int git_tree__parse_raw(void *_tree, const char *data, size_t size) GIT_ERROR_CHECK_ALLOC(entry); entry->attr = attr; - entry->filename_len = filename_len; + entry->filename_len = (uint16_t)filename_len; entry->filename = buffer; entry->oid = (git_oid *) ((char *) buffer + filename_len + 1); } |