This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Errno does not escape archname
authorReini Urban <rurban@x-ray.at>
Wed, 2 Nov 2011 18:17:15 +0000 (13:17 -0500)
committerFather Chrysostomos <sprout@cpan.org>
Wed, 2 Nov 2011 19:59:59 +0000 (12:59 -0700)
With a @ or $ or % character in the user-choosen archname, Errno fails.
I usually use @ to denote git tags in the archlib.

E.g. Possible unintended interpolation of @khwtk in string at ../lib/Errno.pm line 12

ext/Errno/Errno_pm.PL

index 7cd7a24..439f254 100644 (file)
@@ -2,7 +2,7 @@ use ExtUtils::MakeMaker;
 use Config;
 use strict;
 
-our $VERSION = "1.14";
+our $VERSION = "1.15";
 
 my %err = ();
 my %wsa = ();
@@ -316,6 +316,10 @@ EOF
        }
     }
 
+    # escape $Config{'archname'}
+    my $archname = $Config{'archname'};
+    $archname =~ s/([@%\$])/\\\1/g;
+
     # Write Errno.pm
 
     print <<"EDQ";
@@ -330,8 +334,8 @@ use Config;
 use strict;
 
 "\$Config{'archname'}-\$Config{'osvers'}" eq
-"$Config{'archname'}-$Config{'osvers'}" or
-       die "Errno architecture ($Config{'archname'}-$Config{'osvers'}) does not match executable architecture (\$Config{'archname'}-\$Config{'osvers'})";
+"$archname-$Config{'osvers'}" or
+       die "Errno architecture ($archname-$Config{'osvers'}) does not match executable architecture (\$Config{'archname'}-\$Config{'osvers'})";
 
 our \$VERSION = "$VERSION";
 \$VERSION = eval \$VERSION;