Commit 129007b423de2c421b4b87f306dcb509e5313caf

nulltoken 2011-03-03T19:43:11

Fix refs renaming to prevent renaming with an invalid name

diff --git a/src/refs.c b/src/refs.c
index 674839b..19f5406 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)