int
usermap_perm (char *user)
{
- static DEPOT* allow_dp = NULL;
- static DEPOT* deny_dp = NULL;
+ DEPOT* allow_dp = NULL;
+ DEPOT* deny_dp = NULL;
char* allow = NULL;
char* deny = NULL;
- if (allow_dp == NULL)
+ int allow_users = 0;
+ allow_dp = dpopen ("/var/lib/popproxy/allow.db", DP_OREADER, 0);
+ deny_dp = dpopen ("/var/lib/popproxy/deny.db", DP_OREADER, 0);
+ if (allow_dp)
{
- allow_dp = dpopen ("/var/lib/popproxy/allow.db", DP_OREADER, 0);
+ allow = dpget (allow_dp, user, -1, 0, -1, NULL);
+ allow_users = dprnum (allow_dp);
+ dpclose (allow_dp);
}
- if (deny_dp == NULL)
+ if (deny_dp)
{
- deny_dp = dpopen ("/var/lib/popproxy/allow.db", DP_OREADER, 0);
+ deny = dpget (deny_dp, user, -1, 0, -1, NULL);
+ dpclose (deny_dp);
}
- if (allow_dp)
- allow = dpget (allow_dp, user, -1, 0, -1, NULL);
- if (deny_dp)
- deny = dpget (deny_dp, user, -1, 0, -1, NULL);
if (allow && deny)
{
free (allow);
free (deny);
return ACCESS_DENY;
}
- if (!allow_dp)
+ if (allow_users == 0)
return ACCESS_ALLOW;
return ACCESS_DENY;
}