refs.c: off-by-one fix.
authorJunio C Hamano <junkio@cox.net>
Fri, 16 Dec 2005 02:52:51 +0000 (18:52 -0800)
committerJunio C Hamano <junkio@cox.net>
Fri, 16 Dec 2005 02:52:51 +0000 (18:52 -0800)
Signed-off-by: Junio C Hamano <junkio@cox.net>
refs.c

diff --git a/refs.c b/refs.c
index b8fcb98..69858e4 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -346,8 +346,11 @@ int check_ref_format(const char *ref)
                        if (level < 2)
                                return -1; /* at least of form "heads/blah" */
 
-                       /* do not allow ref name to end in "HEAD" */
-                       if (cp - ref > 4 && !strcmp(cp - 4, "HEAD"))
+                       /* Do not allow ref name to end in "HEAD"
+                        * Note that cp is poiting at one past NUL at the end.
+                        * i.e. cp[-1] = NUL.
+                        */
+                       if (5 <= cp - ref && !strcmp(cp - 5, "HEAD"))
                                return -1;
 
                        return 0;