summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@github.com>2017-01-21 23:45:23 +0000
committerEdward Thomson <ethomson@github.com>2017-01-21 23:45:23 +0000
commit28d0ba0ba5f41f71997a15e81bbda4ed2d1b896a (patch)
treeb03c94a2b3a901f12503c10ff6fc13d130668c32 /src
parent452bf57cbe665768810f2597aba50b9afc9509a7 (diff)
downloadlibgit2-28d0ba0ba5f41f71997a15e81bbda4ed2d1b896a.tar.gz
symbolic ref target validation: fixups
Fixups requested in #3912.
Diffstat (limited to 'src')
-rw-r--r--src/refs.c38
-rw-r--r--src/refs.h2
-rw-r--r--src/settings.c2
3 files changed, 11 insertions, 31 deletions
diff --git a/src/refs.c b/src/refs.c
index c77653da8..da6add0b4 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -177,7 +177,7 @@ int git_reference_name_to_id(
return 0;
}
-static int reference__normalize_for_repo(
+static int reference_normalize_for_repo(
git_refname_t out,
git_repository *repo,
const char *name,
@@ -190,29 +190,12 @@ static int reference__normalize_for_repo(
precompose)
flags |= GIT_REF_FORMAT__PRECOMPOSE_UNICODE;
- if (!validate) {
- flags |= GIT_REF_VALIDATION_DISABLE;
- }
+ if (!validate)
+ flags |= GIT_REF_FORMAT__VALIDATION_DISABLE;
return git_reference_normalize_name(out, GIT_REFNAME_MAX, name, flags);
}
-static int reference_normalize_for_repo(
- git_refname_t out,
- git_repository *repo,
- const char *name)
-{
- return reference__normalize_for_repo(out, repo, name, true);
-}
-
-static int reference_normalize_for_repo_without_validation(
- git_refname_t out,
- git_repository *repo,
- const char *name)
-{
- return reference__normalize_for_repo(out, repo, name, false);
-}
-
int git_reference_lookup_resolved(
git_reference **ref_out,
git_repository *repo,
@@ -236,7 +219,7 @@ int git_reference_lookup_resolved(
scan_type = GIT_REF_SYMBOLIC;
- if ((error = reference_normalize_for_repo(scan_name, repo, name)) < 0)
+ if ((error = reference_normalize_for_repo(scan_name, repo, name, true)) < 0)
return error;
if ((error = git_repository_refdb__weakptr(&refdb, repo)) < 0)
@@ -406,7 +389,7 @@ static int reference__create(
if (ref_out)
*ref_out = NULL;
- error = reference_normalize_for_repo(normalized, repo, name);
+ error = reference_normalize_for_repo(normalized, repo, name, true);
if (error < 0)
return error;
@@ -427,11 +410,8 @@ static int reference__create(
} else {
git_refname_t normalized_target;
- if (git_reference__enable_symbolic_ref_target_validation) {
- error = reference_normalize_for_repo(normalized_target, repo, symbolic);
- } else {
- error = reference_normalize_for_repo_without_validation(normalized_target, repo, symbolic);
- }
+ error = reference_normalize_for_repo(normalized_target, repo,
+ symbolic, git_reference__enable_symbolic_ref_target_validation);
if (error < 0)
return error;
@@ -612,7 +592,7 @@ static int reference__rename(git_reference **out, git_reference *ref, const char
assert(ref && new_name && signature);
if ((error = reference_normalize_for_repo(
- normalized, git_reference_owner(ref), new_name)) < 0)
+ normalized, git_reference_owner(ref), new_name, true)) < 0)
return error;
@@ -905,7 +885,7 @@ int git_reference__normalize_name(
int segment_len, segments_count = 0, error = GIT_EINVALIDSPEC;
unsigned int process_flags;
bool normalize = (buf != NULL);
- bool validate = (flags & GIT_REF_VALIDATION_DISABLE) == 0;
+ bool validate = (flags & GIT_REF_FORMAT__VALIDATION_DISABLE) == 0;
#ifdef GIT_USE_ICONV
git_path_iconv_t ic = GIT_PATH_ICONV_INIT;
diff --git a/src/refs.h b/src/refs.h
index c4786ddb4..80e655af7 100644
--- a/src/refs.h
+++ b/src/refs.h
@@ -55,7 +55,7 @@ extern bool git_reference__enable_symbolic_ref_target_validation;
#define GIT_REFS_STASH_FILE GIT_REFS_DIR GIT_STASH_FILE
#define GIT_REF_FORMAT__PRECOMPOSE_UNICODE (1u << 16)
-#define GIT_REF_VALIDATION_DISABLE (1u << 15)
+#define GIT_REF_FORMAT__VALIDATION_DISABLE (1u << 15)
#define GIT_REFNAME_MAX 1024
diff --git a/src/settings.c b/src/settings.c
index 1fcdce2ed..bf0477b06 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -192,7 +192,7 @@ int git_libgit2_opts(int key, ...)
git_object__strict_input_validation = (va_arg(ap, int) != 0);
break;
- case GIT_OPT_ENABLE_SYMBOLIC_REF_TARGET_VALIDATION:
+ case GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION:
git_reference__enable_symbolic_ref_target_validation = (va_arg(ap, int) != 0);
break;