Index: odmrd =================================================================== RCS file: /home/cvs/odmrd/odmrd,v retrieving revision 1.53 diff -u -r1.53 odmrd --- odmrd 13 Jul 2004 11:16:18 -0000 1.53 +++ odmrd 13 Jul 2004 13:13:24 -0000 @@ -6,7 +6,6 @@ use Socket; use MIME::Base64; use Mail::Header; -use CDB_File; use vpopmail; use Digest::HMAC_MD5 qw(hmac_md5_hex); # You'll need Sys::Syslog for logging to syslog. @@ -1121,31 +1120,7 @@ return (); } - # Still need direct CDB access to work around vpopmail.pm - # shortcomings: pw_gid and pw_clear_text - my $cdb = $vpw->{pw_dir} . "/../vpasswd.cdb"; - - &$err("cdb_auth: cdb: $cdb") if $opt_D; - unless (stat($cdb)) { - &$err("cdb_auth: stat($cdb): $!"); - return(); - } - unless (-f _ and -r _) { - &$err("cdb_auth: unuseable file: $cdb"); - return(); - } - - my %db; - unless (tie(%db, 'CDB_File', $cdb)) { - &$err("cdb_auth: cannot tie $cdb"); - return(); - } - my @dbent = split(/:/, $db{$authuser[0]}); - untie %db; - return() unless @dbent; - if ($opt_D) { - &$err("cdb_auth: user: @authuser: " . join(",", @dbent)); &$err("cdb_auth: require_flag: $require_flag"); } @@ -1154,7 +1129,7 @@ &$err("cdb_auth: @authuser: unknown require_flag"); return(); } - if (!($dbent[2] & $masks{$require_flag})) { + if (!($vpw->{pw_gid} & $masks{$require_flag})) { &$err("cdb_auth: @authuser: access is disabled"); return(); } @@ -1162,9 +1137,7 @@ &$err("cdb_auth: secretfield: $secretfield") if $opt_D; local $secretfield = "pw_" . $secretfield; - if ($secretfield eq "pw_clear_text" and $dbent[6]) { - return($dbent[6], $vpw->{pw_dir}); - } elsif ($vpw->{$secretfield}) { + if ($vpw->{$secretfield}) { return($vpw->{$secretfield}, $vpw->{pw_dir}); } else { &$err("cdb_auth: no secret in '$secretfield'");