From dba2643690cfe9752b80a622dec16d9208a8d553 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Dec 10 2020 10:20:59 +0000 Subject: git2spec: avoid malforming of SHA-1 hashes When a SHA-1 hash of a specific commit is used as a tag, the regex shenanigans later in the script can (and will) corrupt it in certain cases. e.g.: $ perl -e ' $tag="6e8cd92261577230daa1098f7e05ec198c3c4281"; $tag=~s/[^0-9]+?([0-9]+)/$1/; print("$tag\n"); ' 68cd92261577230daa1098f7e05ec198c3c4281 (Notice the missing 'e') Let's fix this by limiting the regex's scope to a non-SHA-1 tags only. patch_name: 0026.patch present_in_specfile: true location_in_specfile: 26 squash_commits: true --- diff --git a/git2spec.pl b/git2spec.pl index 7853791..9ddc380 100755 --- a/git2spec.pl +++ b/git2spec.pl @@ -37,7 +37,7 @@ $tag=`git describe --abbrev=0 --tags` if not defined $tag; chomp($tag); my @patches=&create_patches($tag, $pdir); my $num=$#patches + 2; -$tag=~s/[^0-9]+?([0-9]+)/$1/; +$tag=~s/[^0-9]+?([0-9]+)/$1/ if $tag !~ /\b[0-9a-f]{5,40}\b/; my $release="$num.git$datestr"; $release="1" if $num == 1;