URGENT: Bug fixes in the RIPE database distribution
Selina Priestley
Wed May 31 19:07:26 CEST 1995
Has anyone been looking at the problems with the whois server? This has really been a problem for operations here, since a) the problems *appear* to be non-deterministic and b) sometimes the exact netmask for a route is not known. Here's an example of whois oddity. Why doesn't the RADB 192.5.4.0/23 show up in the second query? Thanks, Selina foo-selina:/u/selina: ra 192.5.4 route: 192.5.4.0/23 descr: Vixie Enterprises descr: 116 Stanley Street descr: Redwood City descr: CA 94062, USA origin: AS3557 comm-list: COMM_NSFNET advisory: AS690 1:3561(11) 2:3561(218) 4:200(144) 5:701(147) mnt-by: MAINT-AS3557 changed: nsfnet-admin at merit.edu 950118 source: RADB route: 192.5.4.0/23 descr: NET-VIX2 origin: AS3557 advisory: AS690 1:3561(11) 2:3561(144) 3:3561(27) 4:3561(147) 5:3561(218) 5:701(147) 6:7 01(134) mnt-by: BARRNET changed: vaf at valinor.barrnet.net 950111 source: MCI foo-selina:/u/selina: ra 192.5.5 route: 192.5.5.0/24 descr: Vixie Enterprises descr: 116 Stanley Street descr: Redwood City descr: CA 94062, USA origin: AS3557 comm-list: COMM_NSFNET advisory: AS690 2:200(144) 3:701(147) mnt-by: MAINT-AS3557 changed: nsfnet-admin at merit.edu 940729 source: RADB route: 192.5.4.0/23 descr: NET-VIX2 origin: AS3557 advisory: AS690 1:3561(11) 2:3561(144) 3:3561(27) 4:3561(147) 5:3561(218) 5:701(147) 6:7 01(134) mnt-by: BARRNET changed: vaf at valinor.barrnet.net 950111 source: MCI > bugsy-sfp:/u/sfp: whois -h whois.ra.net 194.128 > route: 194.128.0.0/15 > descr: PIPEX-BLOCK3 > origin: AS1849 > advisory: AS690 1:1849 2:701(147) 3:701(134) 4:1800 > remarks: Holes to come! > mnt-by: AS1849-MNT > changed: tim at pipex.net 950428 > source: RIPE > > bugsy-sfp:/u/sfp: whois -h whois.ra.net 194.128/15 > route: 194.128.0.0/15 > descr: PIPEX Ltd > descr: 216 Cambridge Science Park > descr: Milton Road > descr: Cambridge > descr: England > descr: CB4 4WA > descr: UNITED KINGDOM > origin: AS1849 > comm-list: COMM_NSFNET > advisory: AS690 1:1849 2:701(147) 4:1800 > mnt-by: MAINT-AS1849 > changed: support at pipex.net 950511 > source: RADB > > route: 194.128.0.0/15 > descr: PIPEX-BLOCK3 > origin: AS1849 > advisory: AS690 1:1849 2:701(147) 3:701(134) 4:1800 > remarks: Holes to come! > mnt-by: AS1849-MNT > changed: tim at pipex.net 950428 > source: RIPE > > 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) --- -------- Logged at Wed May 31 19:17:20 MET DST 1995 ---------
[ rr-impl Archive ]