summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2017-09-27 02:17:26 -0400
committerJunio C Hamano <gitster@pobox.com>2017-09-27 16:06:31 +0900
commit7eb4b9d025e1ac2ed5a49530c614b7e69054625a (patch)
tree2a49bf97e1e67044c5228c0513ffeeaceaefd4e2
parent6e68c914102774832c519804498538791cdddff9 (diff)
downloadgit-7eb4b9d025e1ac2ed5a49530c614b7e69054625a.tar.gz
validate_headref: use skip_prefix for symref parsing
Since the previous commit guarantees that our symref buffer is NUL-terminated, we can just use skip_prefix() and friends to parse it. This is shorter and saves us having to deal with magic numbers and keeping the "len" counter up to date. While we're at it, let's name the rather obscure "buf" to "refname", since that is the thing we are parsing with it. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--path.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/path.c b/path.c
index 1ca2cf9a28..650c66c32d 100644
--- a/path.c
+++ b/path.c
@@ -636,7 +636,8 @@ void strbuf_git_common_path(struct strbuf *sb,
int validate_headref(const char *path)
{
struct stat st;
- char *buf, buffer[256];
+ char buffer[256];
+ const char *refname;
unsigned char sha1[20];
int fd;
ssize_t len;
@@ -668,14 +669,10 @@ int validate_headref(const char *path)
/*
* Is it a symbolic ref?
*/
- if (len < 4)
- return -1;
- if (!memcmp("ref:", buffer, 4)) {
- buf = buffer + 4;
- len -= 4;
- while (len && isspace(*buf))
- buf++, len--;
- if (len >= 5 && !memcmp("refs/", buf, 5))
+ if (skip_prefix(buffer, "ref:", &refname)) {
+ while (isspace(*refname))
+ refname++;
+ if (starts_with(refname, "refs/"))
return 0;
}