On Wed, May 11, 2011 at 11:54:34AM -0700, elij wrote:
> On Wed, May 11, 2011 at 7:22 AM, Lukas Fleischer
> <archli...@cryptocrack.de> wrote:
> > On Tue, May 10, 2011 at 09:01:29PM -0700, elij wrote:
> >> the query was being performed when $id was not set, resulting in an
> >> invalid sql query being performed.
> >> ---
> >>  web/lib/acctfuncs.inc |    3 +++
> >>  1 files changed, 3 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/web/lib/acctfuncs.inc b/web/lib/acctfuncs.inc
> >> index 5bcff8b..b2f0548 100644
> >> --- a/web/lib/acctfuncs.inc
> >> +++ b/web/lib/acctfuncs.inc
> >> @@ -786,6 +786,9 @@ function valid_passwd( $userID, $passwd )
> >>   */
> >>  function user_suspended( $id )
> >>  {
> >> +     if (!$id) {
> >> +             return false;
> >> +     }
> >>       $dbh = db_connect();
> >>       $q = "SELECT Suspended FROM Users WHERE ID = " . $id;
> >>       $result = db_query($q, $dbh);
> >
> > Looks ok, but I'd rather say we should locate the code path that led to
> > the unset parameter and add some additional validation there to avoid
> > further unexpected behaviour.
> 
> The source is in try_login (also in lib/acctfuncs.inc):
> 
>     if ( isset($_REQUEST['user']) || isset($_REQUEST['passwd']) ) {
>         $userID = valid_user($_REQUEST['user']);
>         if ( user_suspended( $userID ) ) {
>             $login_error = "Account Suspended.";
>         }

Thanks. I will look into that.

> valid_user (also in the same file) can return (no value) in some cases.
> that large if/elseif block in try_login could probably have some more
> conditions added to test for existence of $userID before calling
> user_suspended on it. Still.. it might make sense to have a guard (the
> test added with this patch) in the function itself in case usage of it
> down the road changes (another code path or something).

Yeah, will be pushed.

Reply via email to