Commit Diff


commit - fb79db15f5778760633c3283c43e4c9f1efc35d2
commit + bd376bb34a8202c56697e2564e95408b1fb3f6d9
blob - 5730c82cd8e62233a17645c4661dc164d7a446d8
blob + c93b831f75483c293e5e6be6f29d4db179061cb7
--- lib/reference.c
+++ lib/reference.c
@@ -202,7 +202,11 @@ open_packed_ref(struct got_reference **ref, FILE *f, c
 	size_t len;
 	const char delim[3] = {'\0', '\0', '\0'};
 
-	if (asprintf(&abs_refname, "refs/%s/%s", subdir, refname) == -1)
+	if (strncmp(refname, "refs/", 5) == 0) {
+		abs_refname = strdup(refname);
+		if (abs_refname == NULL)
+			return got_error_from_errno();
+	} else if (asprintf(&abs_refname, "refs/%s/%s", subdir, refname) == -1)
 		return got_error_from_errno();
 
 	do {