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;