]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
git2spec: avoid malforming of SHA-1 hashes
authorFrantisek Sumsal <frantisek@sumsal.cz>
Wed, 21 Aug 2019 09:16:07 +0000 (11:16 +0200)
committerLukáš Nykrýn <lnykryn@redhat.com>
Thu, 22 Aug 2019 09:15:13 +0000 (11:15 +0200)
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.

git2spec.pl

index 7853791e715a3e833a600acc05918bd0c11d6476..9ddc380514a63417280a855b3936227f2164943a 100755 (executable)
@@ -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;