mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 10:03:43 +00:00
revparse: only allow decimal reflog ordinal specs
passing 0 to git_strol(32|64) let the implementation guess if it's dealing with an octal number or a decimal one. Let's make it safe and ensure that both 'HEAD@{010}' and 'HEAD@{10}' point at the same commit.
This commit is contained in:
parent
29f72aa638
commit
6a5136e538
@ -167,7 +167,7 @@ static int walk_ref_history(git_object **out, git_repository *repo, const char *
|
||||
if (refspeclen > 0)
|
||||
return revspec_error(reflogspec);
|
||||
|
||||
if (git__strtol32(&n, reflogspec+3, NULL, 0) < 0 || n < 1)
|
||||
if (git__strtol32(&n, reflogspec+3, NULL, 10) < 0 || n < 1)
|
||||
return revspec_error(reflogspec);
|
||||
|
||||
if (!git_reference_lookup(&ref, repo, "HEAD")) {
|
||||
@ -233,7 +233,7 @@ static int walk_ref_history(git_object **out, git_repository *repo, const char *
|
||||
|
||||
/* @{N} -> Nth prior value for the ref (from reflog) */
|
||||
else if (all_chars_are_digits(reflogspec+2, reflogspeclen-3) &&
|
||||
!git__strtol32(&n, reflogspec+2, NULL, 0) &&
|
||||
!git__strtol32(&n, reflogspec+2, NULL, 10) &&
|
||||
n <= 100000000) { /* Allow integer time */
|
||||
normalize_maybe_empty_refname(&buf, repo, refspec, refspeclen);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user