From 129007b423de2c421b4b87f306dcb509e5313caf Mon Sep 17 00:00:00 2001 From: nulltoken Date: Thu, 3 Mar 2011 19:43:11 +0200 Subject: [PATCH] Fix refs renaming to prevent renaming with an invalid name --- src/refs.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/refs.c b/src/refs.c index 674839b8b..19f5406a4 100644 --- a/src/refs.c +++ b/src/refs.c @@ -1123,11 +1123,16 @@ int git_reference_rename(git_reference *ref, const char *new_name) { int error; char *old_name; - char old_path[GIT_PATH_MAX], new_path[GIT_PATH_MAX]; + char old_path[GIT_PATH_MAX], new_path[GIT_PATH_MAX], normalized_name[MAX_GITDIR_TREE_STRUCTURE_PATH_LENGTH]; git_reference *looked_up_ref; assert(ref); + /* Ensure the name is valid */ + error = normalize_name(normalized_name, new_name, ref->type & GIT_REF_OID); + if (error < GIT_SUCCESS) + return error; + /* Ensure we're not going to overwrite an existing reference */ error = git_repository_lookup_ref(&looked_up_ref, ref->owner, new_name); if (error == GIT_SUCCESS)