The old code converted any entry whose path constituted a full SHA-1
as a leaf node, without regard for the type of the entry. But only
blobs can be notes. So treat entries whose paths *look like* notes
paths but that are not blobs as non-notes.

Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu>
---
 notes.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/notes.c b/notes.c
index ac69c5aa18..46ab15b83a 100644
--- a/notes.c
+++ b/notes.c
@@ -437,6 +437,11 @@ static void load_subtree(struct notes_tree *t, struct 
leaf_node *subtree,
 
                if (path_len == 2 * (GIT_SHA1_RAWSZ - prefix_len)) {
                        /* This is potentially the remainder of the SHA-1 */
+
+                       if (!S_ISREG(entry.mode))
+                               /* notes must be blobs */
+                               goto handle_non_note;
+
                        if (get_oid_hex_segment(entry.path, path_len,
                                                object_oid.hash + prefix_len,
                                                GIT_SHA1_RAWSZ - prefix_len) < 
0)
-- 
2.11.0

Reply via email to