Undefined values crash pkg_add.
e.g. pkg_add -z tidy


Index: usr.sbin/pkg_add/OpenBSD/PackageRepositoryList.pm
===================================================================
RCS file: /cvs/src/usr.sbin/pkg_add/OpenBSD/PackageRepositoryList.pm,v
retrieving revision 1.21
diff -u -p -r1.21 PackageRepositoryList.pm
--- usr.sbin/pkg_add/OpenBSD/PackageRepositoryList.pm   9 Jan 2010 14:49:53 
-0000       1.21
+++ usr.sbin/pkg_add/OpenBSD/PackageRepositoryList.pm   28 Mar 2010 18:17:53 
-0000
@@ -66,6 +66,7 @@ sub match_locations
        my ($self, @search) = @_;
        for my $repo (@{$self->{l}}) {
                my $l = $repo->match_locations(@search);
+               last unless defined $l;
                if (@$l > 0) {
                        return $l;
                }
Index: usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm
===================================================================
RCS file: /cvs/src/usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm,v
retrieving revision 1.21
diff -u -p -r1.21 Installed.pm
--- usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm     6 Mar 2010 
11:55:31 -0000       1.21
+++ usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm     28 Mar 2010 
18:17:53 -0000
@@ -70,7 +70,8 @@ sub match_locations
        my ($self, $search, @filters) = @_;
        my $l = $search->match_locations($self);
        while (my $filter = (shift @filters)) {
-               last if @$l == 0; # don't bother filtering empty list
+               # Don't bother filtering empty list
+               last if ! defined $l || @$l == 0;
                $l = $filter->filter_locations($l);
        }
        return $l;

Reply via email to