From 8f6073f63e42c2a3ff3b6fbb20729c7a911be30f Mon Sep 17 00:00:00 2001 From: Jacques Germishuys Date: Thu, 21 Aug 2014 18:53:43 +0200 Subject: [PATCH] Check that the refspec matches before modifying the out buffer --- src/refspec.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/refspec.c b/src/refspec.c index 8689769f3..9f0df35a7 100644 --- a/src/refspec.c +++ b/src/refspec.c @@ -226,14 +226,14 @@ int git_refspec_transform(git_buf *out, const git_refspec *spec, const char *nam assert(out && spec && name); git_buf_sanitize(out); - if (!spec->pattern) - return git_buf_puts(out, spec->dst); - if (!git_refspec_src_matches(spec, name)) { giterr_set(GITERR_INVALID, "ref '%s' doesn't match the source", name); return -1; } + if (!spec->pattern) + return git_buf_puts(out, spec->dst); + return refspec_transform(out, spec->src, spec->dst, name); } @@ -242,14 +242,14 @@ int git_refspec_rtransform(git_buf *out, const git_refspec *spec, const char *na assert(out && spec && name); git_buf_sanitize(out); - if (!spec->pattern) - return git_buf_puts(out, spec->src); - if (!git_refspec_dst_matches(spec, name)) { giterr_set(GITERR_INVALID, "ref '%s' doesn't match the destination", name); return -1; } + if (!spec->pattern) + return git_buf_puts(out, spec->src); + return refspec_transform(out, spec->dst, spec->src, name); }