load_subtree(): only consider blobs to be potential notes
authorMichael Haggerty <mhagger@alum.mit.edu>
Sat, 26 Aug 2017 08:28:07 +0000 (10:28 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sat, 26 Aug 2017 16:21:01 +0000 (09:21 -0700)
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 <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
notes.c
diff --git a/notes.c b/notes.c
index 61a5001fc069debdff9bffe453a0ae000eac5319..8bca18edbb3bce9ae06fdea5129b7358b380c10b 100644 (file)
--- 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)