OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Ralf S. Engelschall
  Root:   /e/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-re                       Date:   23-Jul-2003 17:37:36
  Branch: HEAD                             Handle: 2003072316373500

  Modified files:
    openpkg-re              rpmlint.pl

  Log:
    more checks for the binary RPMs (not all packages are pass this at
    this time)

  Summary:
    Revision    Changes     Path
    1.9         +45 -10     openpkg-re/rpmlint.pl
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-re/rpmlint.pl
  ============================================================================
  $ cvs diff -u -r1.8 -r1.9 rpmlint.pl
  --- openpkg-re/rpmlint.pl     22 Jul 2003 14:46:59 -0000      1.8
  +++ openpkg-re/rpmlint.pl     23 Jul 2003 15:37:35 -0000      1.9
  @@ -172,6 +172,10 @@
       my ($filename, $checks) = @_;
       my $info = {};
   
  +    #   query package name
  +    &msg_verbose("++ querying RPM package name");
  +    $info->{name} = `$rpm -qp --qf '%{NAME}' $filename`;
  +
       #   query prefix
       &msg_verbose("++ querying RPM package installation prefix");
       $info->{prefix} = `$rpm -qp --qf '%{PREFIXES}' $filename`;
  @@ -368,11 +372,42 @@
   
   sub check_attrib {
       my ($rpm, $info) = @_;
  +    
  +    #   check for empty files
  +    foreach my $path (keys(%{$info->{ls}})) {
  +        if ($info->{ls}->{$path}->{'size'} == 0) {
  +            &lint_warning($rpm, "empty file \"$path\" found (expected no empty 
files)");
  +        }
  +    }
  +
  +    #   check for %config flagged files
  +    my $prefix = quotemeta($info->{'prefix'});
  +    my $name   = quotemeta($info->{'name'});
  +    foreach my $path (keys(%{$info->{ls}})) {
  +        my $config = $info->{ls}->{$path}->{'config'};
  +        my $path   = $info->{ls}->{$path}->{'path'};
  +        if ($config and $path !~ m/^$prefix\/etc\/($name\d*|fsl)\/.+/) {
  +            &lint_warning($rpm, "non-config file \"$path\" flagged as \%config 
(expected only \"$prefix/etc/$name/*\" files to be \%config files)");
  +        }
  +        if ($config and $path =~ m/^$prefix\/s?bin\/[^\/]+$/) {
  +            &lint_error($rpm, "executable file \"$path\" flagged as \%config");
  +        }
  +        if ($config and $path =~ m/^$prefix\/etc\/rc\.d\/rc\.$name$/) {
  +            &lint_error($rpm, "run-command file \"$path\" flagged as \%config");
  +        }
  +    }
  +
  +    #   check for permissions
  +    foreach my $path (keys(%{$info->{ls}})) {
  +        my $perm = $info->{ls}->{$path}->{'perm'};
  +        if ($path =~ m/^$prefix\/(bin|sbin)\/[^\/]+$/) {
  +            if ($perm !~ m|^[^d]..[xs]..[xs]..[xs]$|) {
  +                &lint_warning($rpm, "executable file \"$path\" has permissions 
\"$perm\" only (expected it to be executable by everyone)");
  +            }
  +        }
  +    }
   
  -    #   permissions
  -    #   user/group
  -    #   size
  -    #   %config flag
  +    #   TODO: user/group?
   }
   
   ##  _________________________________________________________________
  @@ -384,11 +419,11 @@
   sub check_content {
       my ($rpm, $info) = @_;
   
  -    #   stripped (file)
  -    #   syslibs (ldd)
  -    #   hard-coded paths pointing outside instance
  -    #   sanity check for shebang-lines
  -    #   contained temporary path
  -    #   bad-files: .po
  +    #   TODO: stripped (file)
  +    #   TODO: syslibs (ldd)
  +    #   TODO: hard-coded paths pointing outside instance
  +    #   TODO: sanity check for shebang-lines
  +    #   TODO: contained temporary path
  +    #   TODO: bad-files: .po
   }
   
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     [EMAIL PROTECTED]

Reply via email to