Validate user input/arch, bug 326029.
authoridl0r <idl0r@gentoo.org>
Fri, 2 Jul 2010 15:34:12 +0000 (15:34 -0000)
committeridl0r <idl0r@gentoo.org>
Fri, 2 Jul 2010 15:34:12 +0000 (15:34 -0000)
svn path=/trunk/gentoolkit-dev/; revision=788

ChangeLog
src/ekeyword/ekeyword

index 8e4d904713d3b9635e3d026c34e96eabc74cc5a8..0c7361d956c58d694973332826e15a1d6900b5e2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,7 @@
                get_architectures reads $PORTDIR/profiles/arch.list and adds all
                available architectures to the %ARCH hash which can be used for
                validation.
+               Validate user input/arch, bug 326029.
 
 2010-05-17: Christian Ruppert <idl0r@gentoo.org>
        * echangelog: Update copyright in other files too (except binaries and
index dab518925d983ad193265c4848e7bd8026cb2695..3024f0ae46281d594714514ccab41af845f077cc 100755 (executable)
@@ -13,6 +13,9 @@
 my ($kw_re) = '^(?:([-~^]?)(\w[\w-]*)|([-^]\*))$';
 my (@kw);
 
+my $PORTDIR = undef;
+my %ARCH = ();
+
 sub file_parse {
        my $fname = shift;
        my @content = ();
@@ -71,9 +74,21 @@ for my $a (@ARGV) {
        die "I don't understand $a\n";
 }
 
+$PORTDIR = get_portdir();
+get_architectures();
+
 my $files = 0;
 for my $f (@ARGV) {
-       if ($f =~ /$kw_re/o) {
+       if ($f =~ m/$kw_re/o) {
+               my $arch = $2;
+
+               if(length($arch) > 0 && $arch ne "all") {
+                       if(!defined($ARCH{$arch})) {
+                               printf STDERR ("'%s' is an unknown architecture! skipping...\n", $arch);
+                               next;
+                       }
+               }
+
                push @kw, $f;
                next;
        }