The fix:
$ cvs di -ub port.pm
Index: port.pm
===================================================================
RCS file: /home/repositories/freshports-1/scripts/port.pm,v
retrieving revision 1.52
diff -u -b -r1.52 port.pm
--- port.pm 6 Jun 2008 18:13:41 -0000 1.52
+++ port.pm 10 Aug 2008 21:09:51 -0000
@@ -160,6 +160,7 @@
# we are updating
# NOTE: NULLIfEmpty invokes db_escape
+ # these items were escaped here because I thought it was a problem not assigning them to a variable.
$is_interactive_alt = FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{is_interactive});
$expiration_date_alt = FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{expiration_date});
$not_for_archs_alt = FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{not_for_archs});
@@ -176,21 +177,21 @@
revision = " . $dbh->quote($this->{revision}) . ",
maintainer = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{maintainer})) . ",
homepage = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{homepage}) . ",
- master_sites = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{master_sites})) . ",
+ master_sites = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{master_sites}) . ",
extract_suffix = " . $dbh->quote($this->{package_exists}) . ",
- depends_build = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{depends_build})) . ",
- depends_run = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{depends_run})) . ",
- depends_lib = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{depends_lib})) . ",
- forbidden = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{forbidden})) . ",
- broken = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{broken})) . ",
- deprecated = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{deprecated})) . ",
- ignore = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{ignore})) . ",
- master_port = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{master_port})) . ",
- latest_link = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{latest_link})) . ",
- no_latest_link = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{no_latest_link})) . ",
- no_package = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{no_package})) . ",
- package_name = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{package_name})) . ",
- portepoch = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{portepoch})) . ",
+ depends_build = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{depends_build}) . ",
+ depends_run = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{depends_run}) . ",
+ depends_lib = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{depends_lib}) . ",
+ forbidden = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{forbidden}) . ",
+ broken = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{broken}) . ",
+ deprecated = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{deprecated}) . ",
+ ignore = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{ignore}) . ",
+ master_port = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{master_port}) . ",
+ latest_link = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{latest_link}) . ",
+ no_latest_link = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{no_latest_link}) . ",
+ no_package = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{no_package}) . ",
+ package_name = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{package_name}) . ",
+ portepoch = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{portepoch}) . ",
restricted = " . $restricted_alt . ",
no_cdrom = " . $no_cdrom_alt . ",
expiration_date = " . $expiration_date_alt . ",
@@ -198,7 +199,8 @@
only_for_archs = " . $only_for_archs_alt . ",
not_for_archs = " . $not_for_archs_alt . ",
showconfig = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{showconfig}) . ",
- categories = " . FreshPorts::Utilities::db_escape($dbh->quote($this->{categories}));
+ categories = " . FreshPorts::Utilities::NULLIfEmpty($dbh, $this->{categories});
+
# we don't always have this value, so we don't change it....
if (defined($this->{last_commit_id})) {
Why do the above changes work? Because NullIfEmpty() checks for a NULL value before escaping the value.
sub NULLIfEmpty {
my $dbh = shift;
my $value = shift;
my $result = undef;
if (!defined($value) || $value eq '') {
$result = 'NULL';
} else {
$result = db_escape($dbh->quote($value));
}
return $result;
}











