mirror of
https://github.com/git/git.git
synced 2024-09-28 12:21:46 +02:00
Merge branch 'jk/validate-headref-fix' into maint
Code clean-up. * jk/validate-headref-fix: validate_headref: use get_oid_hex for detached HEADs validate_headref: use skip_prefix for symref parsing validate_headref: NUL-terminate HEAD buffer
This commit is contained in:
commit
41052b11bc
23
path.c
23
path.c
@ -635,8 +635,9 @@ void strbuf_git_common_path(struct strbuf *sb,
|
|||||||
int validate_headref(const char *path)
|
int validate_headref(const char *path)
|
||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
char *buf, buffer[256];
|
char buffer[256];
|
||||||
unsigned char sha1[20];
|
const char *refname;
|
||||||
|
struct object_id oid;
|
||||||
int fd;
|
int fd;
|
||||||
ssize_t len;
|
ssize_t len;
|
||||||
|
|
||||||
@ -660,24 +661,24 @@ int validate_headref(const char *path)
|
|||||||
len = read_in_full(fd, buffer, sizeof(buffer)-1);
|
len = read_in_full(fd, buffer, sizeof(buffer)-1);
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
|
if (len < 0)
|
||||||
|
return -1;
|
||||||
|
buffer[len] = '\0';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Is it a symbolic ref?
|
* Is it a symbolic ref?
|
||||||
*/
|
*/
|
||||||
if (len < 4)
|
if (skip_prefix(buffer, "ref:", &refname)) {
|
||||||
return -1;
|
while (isspace(*refname))
|
||||||
if (!memcmp("ref:", buffer, 4)) {
|
refname++;
|
||||||
buf = buffer + 4;
|
if (starts_with(refname, "refs/"))
|
||||||
len -= 4;
|
|
||||||
while (len && isspace(*buf))
|
|
||||||
buf++, len--;
|
|
||||||
if (len >= 5 && !memcmp("refs/", buf, 5))
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Is this a detached HEAD?
|
* Is this a detached HEAD?
|
||||||
*/
|
*/
|
||||||
if (!get_sha1_hex(buffer, sha1))
|
if (!get_oid_hex(buffer, &oid))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user