Hi folks,

I am using Apache::AuthDBI v1.02 on Apache/1.3.29 (Linux/SUSE)
mod_perl/1.29.  Perl v5.8.3.

I received this error, and found it's due to an operator precedence
problem:
  Undefined subroutine &Apache2::Const::OK called at
  /usr/lib/perl5/site_perl/5.8.3/Apache/AuthDBI.pm line 906.

This expression:
  $user_result != MP2 ? Apache2::Const::OK() : Apache::Constants::OK()

Was being treated as:
  ($user_result != MP2) ? Apache2::Const::OK() : Apache::Constants::OK()

The patch below parenthesizes the expression to apply the intended
meaning:
  $user_result != (MP2 ? Apache2::Const::OK() : Apache::Constants::OK())

Could you please include it in the next release to CPAN?

Thanks,
Philip

--- AuthDBI.pm.orig     2006-08-02 12:38:54.000000000 +0200
+++ AuthDBI.pm  2006-08-17 19:45:22.117748000 +0200
@@ -719,8 +719,8 @@
     }
 
     # check for users
-    if (($user_result != MP2 ? Apache2::Const::OK() :
-         Apache::Constants::OK()) && $user_requirements) {
+    if (($user_result != (MP2 ? Apache2::Const::OK() :
+         Apache::Constants::OK())) && $user_requirements) {
 
         $user_result = MP2 ? Apache2::Const::AUTH_REQUIRED() :
             Apache::Constants::AUTH_REQUIRED();
@@ -905,9 +905,9 @@
     # check the results of the requirement checks
     if ($Attr->{authoritative} eq 'on' &&
         (
-         $user_result != MP2 ?
+         $user_result != (MP2 ?
          Apache2::Const::OK() :
-         Apache::Constants::OK()
+         Apache::Constants::OK())
         )
         && (
             $group_result != MP2 ? Apache2::Const::OK() :

Reply via email to