<<< Chronological >>> Author Index    Subject Index <<< Threads >>>

URGENT: Bug fixes in the RIPE database distribution


Dear all,

Recently Tony Bates found an authorisation problem in 'updatecheck.pl'. 
Today my fix is ready. Please apply this fix to your software!

Furthermore, I included the recent fixes made by Tony for :

net2net.pl
misc.pl

in the distribution and a small one from Curtis Villamizar for :

dbupdate.pl

I plan to add also some other fixes from Curtis in the next release.

Kind regards,

David Kessens
RIPE NCC Database software maintainer

======================================================================

How to apply the fix(es) :

Fix src/filename.pl with 'patch' or just put in the corresponding
file(s) of the new distribution (ftp:/ftp.ripe.net/ripe/dbase/software,
file with latest version number). Always make a backup copy of the old
file(s) to be able to restore the original software in case you might
experience problems. After the fix(es) are applied, do a 'make install'
from the database root directory to install the patched file(s).

The following files have been changed from the previous release:

updatecheck.pl
dbupdate.pl
net2net.pl
misc.pl

======================================================================
*** /ncc/dbase/src/old/updatecheck.pl	Tue Jan 17 17:37:36 1995
--- /ncc/dbase/src/updatecheck.pl	Tue May 30 18:47:24 1995
***************
*** 1,7 ****
  #	$RCSfile: updatecheck.pl,v $
! #	$Revision: 1.19 $
  #	$Author: ripe-dbm $
! #	$Date: 1995/01/17 16:37:36 $
  
  require "defines.pl";
  require "adderror.pl";
--- 1,7 ----
  #	$RCSfile: updatecheck.pl,v $
! #	$Revision: 1.20 $
  #	$Author: ripe-dbm $
! #	$Date: 1995/05/30 13:34:47 $
  
  require "defines.pl";
  require "adderror.pl";
***************
*** 70,79 ****
      }
  
  
!     # Check authorisation by maintainer unless override is specified.
  
      if (!$new{"uo"} && !&Maintainer(*cur, *new)) {
!         return $E_AUTHFAIL unless !&entype(*new);
      }
  
      # Catch if called from dbdel, then skip all checks,
--- 70,80 ----
      }
  
  
!     # Check authorisation by maintainer unless override is specified
!     # and handles special (dirty trick) delete case with $new in $cur
  
      if (!$new{"uo"} && !&Maintainer(*cur, *new)) {
!         return $E_AUTHFAIL if !$cur{"uo"};
      }
  
      # Catch if called from dbdel, then skip all checks,
*** /ncc/dbase/src/old/dbupdate.pl	Tue May 30 18:38:57 1995
--- /ncc/dbase/src/dbupdate.pl	Tue May 30 18:48:17 1995
***************
*** 1,9 ****
  #!PERL
  
  #	$RCSfile: dbupdate.pl,v $
! #	$Revision: 0.33 $
! #	$Author: david $
! #	$Date: 1995/02/24 11:13:22 $
  
  # This is a client that will update objects read from a file directly
  # in the database, without interference of updated.
--- 1,9 ----
  #!PERL
  
  #	$RCSfile: dbupdate.pl,v $
! #	$Revision: 0.34 $
! #	$Author: ripe-dbm $
! #	$Date: 1995/05/30 14:44:09 $
  
  # This is a client that will update objects read from a file directly
  # in the database, without interference of updated.
***************
*** 46,52 ****
  # -F                    - Do fast update without mail and other stuff
  # -S                    - Do only syntax check - Not implemented
  
! &Getopts('ln:vMAHVFS');
  
  # Need this below for running perl in tainted mode.
  
--- 46,52 ----
  # -F                    - Do fast update without mail and other stuff
  # -S                    - Do only syntax check - Not implemented
  
! &Getopts('l:n:vMAHVFS');
  
  # Need this below for running perl in tainted mode.
  
*** /ncc/dbase/src/old/net2net.pl	Tue May 30 18:43:22 1995
--- /ncc/dbase/src/net2net.pl	Tue May 30 18:49:30 1995
***************
*** 1,8 ****
  #
  #	$RCSfile: net2net.pl,v $
! #	$Revision: 0.13 $
! #	$Author: tony $
! #	$Date: 1994/09/20 12:27:36 $
  #
  # net2net.pl 
  #
--- 1,8 ----
  #
  #	$RCSfile: net2net.pl,v $
! #	$Revision: 0.14 $
! #	$Author: ripe-dbm $
! #	$Date: 1995/05/30 16:45:19 $
  #
  # net2net.pl 
  #
***************
*** 140,147 ****
              $len = 16;
  	} elsif ($2 == 0 && $3 == 0 && $4 == 0) {
  	    $len = 8;
  	}
! 	@return_rep = (@return_rep, $net_rep."/".$len);
  	return $OK, "", @return_rep;
      } else {
  	return $NOK, 
--- 140,152 ----
              $len = 16;
  	} elsif ($2 == 0 && $3 == 0 && $4 == 0) {
  	    $len = 8;
+ 	} else {
+ 	    return $NOK,
+ 	    "$net_rep is not a classful net representation I understand",
+ 	    @return_rep;     
  	}
! 	local($val) = &trimnet($net_rep);
! 	@return_rep = (@return_rep, $val."/".$len);
  	return $OK, "", @return_rep;
      } else {
  	return $NOK, 
***************
*** 161,167 ****
  	local($begin) = &quad2int($oldnet);
  	local($end) = &quad2int($2);
  	if($end < $begin) {
! 	    return $NOK, "range is invalid", @returndtring;
  	}
  
  	if ($oldnet =~ /(\d+)\.\d+\.\d+\.\d+/) {
--- 166,172 ----
  	local($begin) = &quad2int($oldnet);
  	local($end) = &quad2int($2);
  	if($end < $begin) {
! 	    return $NOK, "range is invalid", @returnstring;
  	}
  
  	if ($oldnet =~ /(\d+)\.\d+\.\d+\.\d+/) {
***************
*** 236,242 ****
  			    "based on prefix $usepre",
              @returnstring;
  	}
! 	return $OK, "", $net_rep;
      } else {
  	return $NOK,
  	"$net_rep is not an representation I understand",
--- 241,249 ----
  			    "based on prefix $usepre",
              @returnstring;
  	}
! 	local($val) = &trimnet($net);
! 	@returnstring = "$val"."/".$len;
! 	return $OK, "", @returnstring;
      } else {
  	return $NOK,
  	"$net_rep is not an representation I understand",
***************
*** 370,373 ****
--- 377,386 ----
      }
      return( $s );
  }
+ 
+ sub trimnet {
+     local($quad) = @_;
+     return(&int2quad(&quad2int($quad)));
+ }
  1;
+ 
*** /ncc/dbase/src/old/misc.pl	Wed May 31 14:06:18 1995
--- /ncc/dbase/src/misc.pl	Wed May 31 14:08:13 1995
***************
*** 1,9 ****
  #       misc - miscellaneaous functions
  #
  #	$RCSfile: misc.pl,v $
! #	$Revision: 0.44 $
! #	$Author: marten $
! #	$Date: 1994/12/16 11:06:55 $
  #
  
  require "defines.pl";
--- 1,9 ----
  #       misc - miscellaneaous functions
  #
  #	$RCSfile: misc.pl,v $
! #	$Revision: 0.45 $
! #	$Author: ripe-dbm $
! #	$Date: 1995/05/31 12:04:40 $
  #
  
  require "defines.pl";
***************
*** 197,203 ****
  #
  sub iscommunity {
      local($str) = @_;
!     return 0 if $str =~ /[a-z]/;
      foreach $_ ((keys %KEYWORD, "AS")) {
  	if (($_ eq "(") || ($_ eq ")")) {
  	    $_ = "\\".$_;
--- 197,203 ----
  #
  sub iscommunity {
      local($str) = @_;
!     return 0 if $str !~ /[A-Z]+/;
      foreach $_ ((keys %KEYWORD, "AS")) {
  	if (($_ eq "(") || ($_ eq ")")) {
  	    $_ = "\\".$_;
*** /ncc/dbase/src/old/updatecheck.pl	Tue Jan 17 17:37:36 1995
--- /ncc/dbase/src/updatecheck.pl	Tue May 30 18:47:24 1995
***************
*** 1,7 ****
  #	$RCSfile: updatecheck.pl,v $
! #	$Revision: 1.19 $
  #	$Author: ripe-dbm $
! #	$Date: 1995/01/17 16:37:36 $
  
  require "defines.pl";
  require "adderror.pl";
--- 1,7 ----
  #	$RCSfile: updatecheck.pl,v $
! #	$Revision: 1.20 $
  #	$Author: ripe-dbm $
! #	$Date: 1995/05/30 13:34:47 $
  
  require "defines.pl";
  require "adderror.pl";
***************
*** 70,79 ****
      }
  
  
!     # Check authorisation by maintainer unless override is specified.
  
      if (!$new{"uo"} && !&Maintainer(*cur, *new)) {
!         return $E_AUTHFAIL unless !&entype(*new);
      }
  
      # Catch if called from dbdel, then skip all checks,
--- 70,80 ----
      }
  
  
!     # Check authorisation by maintainer unless override is specified
!     # and handles special (dirty trick) delete case with $new in $cur
  
      if (!$new{"uo"} && !&Maintainer(*cur, *new)) {
!         return $E_AUTHFAIL if !$cur{"uo"};
      }
  
      # Catch if called from dbdel, then skip all checks,
*** /ncc/dbase/src/old/dbupdate.pl	Tue May 30 18:38:57 1995
--- /ncc/dbase/src/dbupdate.pl	Tue May 30 18:48:17 1995
***************
*** 1,9 ****
  #!PERL
  
  #	$RCSfile: dbupdate.pl,v $
! #	$Revision: 0.33 $
! #	$Author: david $
! #	$Date: 1995/02/24 11:13:22 $
  
  # This is a client that will update objects read from a file directly
  # in the database, without interference of updated.
--- 1,9 ----
  #!PERL
  
  #	$RCSfile: dbupdate.pl,v $
! #	$Revision: 0.34 $
! #	$Author: ripe-dbm $
! #	$Date: 1995/05/30 14:44:09 $
  
  # This is a client that will update objects read from a file directly
  # in the database, without interference of updated.
***************
*** 46,52 ****
  # -F                    - Do fast update without mail and other stuff
  # -S                    - Do only syntax check - Not implemented
  
! &Getopts('ln:vMAHVFS');
  
  # Need this below for running perl in tainted mode.
  
--- 46,52 ----
  # -F                    - Do fast update without mail and other stuff
  # -S                    - Do only syntax check - Not implemented
  
! &Getopts('l:n:vMAHVFS');
  
  # Need this below for running perl in tainted mode.
  
*** /ncc/dbase/src/old/net2net.pl	Tue May 30 18:43:22 1995
--- /ncc/dbase/src/net2net.pl	Tue May 30 18:49:30 1995
***************
*** 1,8 ****
  #
  #	$RCSfile: net2net.pl,v $
! #	$Revision: 0.13 $
! #	$Author: tony $
! #	$Date: 1994/09/20 12:27:36 $
  #
  # net2net.pl 
  #
--- 1,8 ----
  #
  #	$RCSfile: net2net.pl,v $
! #	$Revision: 0.14 $
! #	$Author: ripe-dbm $
! #	$Date: 1995/05/30 16:45:19 $
  #
  # net2net.pl 
  #
***************
*** 140,147 ****
              $len = 16;
  	} elsif ($2 == 0 && $3 == 0 && $4 == 0) {
  	    $len = 8;
  	}
! 	@return_rep = (@return_rep, $net_rep."/".$len);
  	return $OK, "", @return_rep;
      } else {
  	return $NOK, 
--- 140,152 ----
              $len = 16;
  	} elsif ($2 == 0 && $3 == 0 && $4 == 0) {
  	    $len = 8;
+ 	} else {
+ 	    return $NOK,
+ 	    "$net_rep is not a classful net representation I understand",
+ 	    @return_rep;     
  	}
! 	local($val) = &trimnet($net_rep);
! 	@return_rep = (@return_rep, $val."/".$len);
  	return $OK, "", @return_rep;
      } else {
  	return $NOK, 
***************
*** 161,167 ****
  	local($begin) = &quad2int($oldnet);
  	local($end) = &quad2int($2);
  	if($end < $begin) {
! 	    return $NOK, "range is invalid", @returndtring;
  	}
  
  	if ($oldnet =~ /(\d+)\.\d+\.\d+\.\d+/) {
--- 166,172 ----
  	local($begin) = &quad2int($oldnet);
  	local($end) = &quad2int($2);
  	if($end < $begin) {
! 	    return $NOK, "range is invalid", @returnstring;
  	}
  
  	if ($oldnet =~ /(\d+)\.\d+\.\d+\.\d+/) {
***************
*** 236,242 ****
  			    "based on prefix $usepre",
              @returnstring;
  	}
! 	return $OK, "", $net_rep;
      } else {
  	return $NOK,
  	"$net_rep is not an representation I understand",
--- 241,249 ----
  			    "based on prefix $usepre",
              @returnstring;
  	}
! 	local($val) = &trimnet($net);
! 	@returnstring = "$val"."/".$len;
! 	return $OK, "", @returnstring;
      } else {
  	return $NOK,
  	"$net_rep is not an representation I understand",
***************
*** 370,373 ****
--- 377,386 ----
      }
      return( $s );
  }
+ 
+ sub trimnet {
+     local($quad) = @_;
+     return(&int2quad(&quad2int($quad)));
+ }
  1;
+ 
*** /ncc/dbase/src/old/misc.pl	Wed May 31 14:06:18 1995
--- /ncc/dbase/src/misc.pl	Wed May 31 14:08:13 1995
***************
*** 1,9 ****
  #       misc - miscellaneaous functions
  #
  #	$RCSfile: misc.pl,v $
! #	$Revision: 0.44 $
! #	$Author: marten $
! #	$Date: 1994/12/16 11:06:55 $
  #
  
  require "defines.pl";
--- 1,9 ----
  #       misc - miscellaneaous functions
  #
  #	$RCSfile: misc.pl,v $
! #	$Revision: 0.45 $
! #	$Author: ripe-dbm $
! #	$Date: 1995/05/31 12:04:40 $
  #
  
  require "defines.pl";
***************
*** 197,203 ****
  #
  sub iscommunity {
      local($str) = @_;
!     return 0 if $str =~ /[a-z]/;
      foreach $_ ((keys %KEYWORD, "AS")) {
  	if (($_ eq "(") || ($_ eq ")")) {
  	    $_ = "\\".$_;
--- 197,203 ----
  #
  sub iscommunity {
      local($str) = @_;
!     return 0 if $str !~ /[A-Z]+/;
      foreach $_ ((keys %KEYWORD, "AS")) {
  	if (($_ eq "(") || ($_ eq ")")) {
  	    $_ = "\\".$_;


--- End of fix(es) ---



<<< Chronological >>> Author    Subject <<< Threads >>>