You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Erik Huelsmann <eh...@gmail.com> on 2008/03/01 13:26:00 UTC

Re: svn commit: r29659 - trunk/subversion/svnserve

On Sat, Mar 1, 2008 at 5:58 AM,  <gl...@tigris.org> wrote:
> Author: glasser
>  Date: Fri Feb 29 20:58:59 2008
>  New Revision: 29659
>
>  Log:
>  Clear a bunch of error leaks in the svnserve Cyrus SASL
>  implementation.
>
>  * subversion/svnserve/cyrus_auth.c
>   (fail_cmd, cyrus_auth_request): Clear all errors written to the
>    client.
>
>
>  Modified:
>    trunk/subversion/svnserve/cyrus_auth.c
>
>  Modified: trunk/subversion/svnserve/cyrus_auth.c
>  URL: http://svn.collab.net/viewvc/svn/trunk/subversion/svnserve/cyrus_auth.c?pathrev=29659&r1=29658&r2=29659
>  ==============================================================================
>  --- trunk/subversion/svnserve/cyrus_auth.c      (original)
>  +++ trunk/subversion/svnserve/cyrus_auth.c      Fri Feb 29 20:58:59 2008
>  @@ -139,6 +139,7 @@
>    svn_error_t *err = svn_error_create(SVN_ERR_RA_NOT_AUTHORIZED, NULL,
>                                        sasl_errdetail(sasl_ctx));
>    SVN_ERR(svn_ra_svn_write_cmd_failure(conn, pool, err));
>  +  svn_error_clear(err);

This still leaves an error leak when the
svn_ra_svn_write_cmd_failure() function fails. Same in the other
cases. It's probably better to catch the result from
svn_ra_svn_write_cmd_failure() in order to be able to clear err and
return the result.



>    return svn_ra_svn_flush(conn, pool);
>   }
>
>  @@ -242,6 +243,7 @@
>      {
>        svn_error_t *err = svn_error_wrap_apr(apr_err, _("Can't get hostname"));
>        SVN_ERR(svn_ra_svn_write_cmd_failure(conn, pool, err));
>  +      svn_error_clear(err);
>        return svn_ra_svn_flush(conn, pool);
>      }
>
>  @@ -257,6 +259,7 @@
>        svn_error_t *err = svn_error_create(SVN_ERR_RA_NOT_AUTHORIZED, NULL,
>                                            sasl_errstring(result, NULL, NULL));
>        SVN_ERR(svn_ra_svn_write_cmd_failure(conn, pool, err));
>  +      svn_error_clear(err);
>        return svn_ra_svn_flush(conn, pool);
>      }
>
>  @@ -311,6 +314,7 @@
>                                            _("Could not obtain the list"
>                                            " of SASL mechanisms"));
>        SVN_ERR(svn_ra_svn_write_cmd_failure(conn, pool, err));
>  +      svn_error_clear(err);
>        return svn_ra_svn_flush(conn, pool);
>      }
>
>  @@ -351,6 +355,7 @@
>                                   _("Couldn't obtain the authenticated"
>                                   " username"));
>            SVN_ERR(svn_ra_svn_write_cmd_failure(conn, pool, err));
>  +          svn_error_clear(err);
>            return svn_ra_svn_flush(conn, pool);
>          }
>      }

Bye,


Erik.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: svn commit: r29659 - trunk/subversion/svnserve

Posted by David Glasser <gl...@davidglasser.net>.
On Sat, Mar 1, 2008 at 5:26 AM, Erik Huelsmann <eh...@gmail.com> wrote:
> On Sat, Mar 1, 2008 at 5:58 AM,  <gl...@tigris.org> wrote:
>  > Author: glasser
>  >  Date: Fri Feb 29 20:58:59 2008
>  >  New Revision: 29659
>  >
>  >  Log:
>  >  Clear a bunch of error leaks in the svnserve Cyrus SASL
>  >  implementation.
>  >
>  >  * subversion/svnserve/cyrus_auth.c
>  >   (fail_cmd, cyrus_auth_request): Clear all errors written to the
>  >    client.
>  >
>  >
>  >  Modified:
>  >    trunk/subversion/svnserve/cyrus_auth.c
>  >
>  >  Modified: trunk/subversion/svnserve/cyrus_auth.c
>  >  URL: http://svn.collab.net/viewvc/svn/trunk/subversion/svnserve/cyrus_auth.c?pathrev=29659&r1=29658&r2=29659
>  >  ==============================================================================
>  >  --- trunk/subversion/svnserve/cyrus_auth.c      (original)
>  >  +++ trunk/subversion/svnserve/cyrus_auth.c      Fri Feb 29 20:58:59 2008
>  >  @@ -139,6 +139,7 @@
>  >    svn_error_t *err = svn_error_create(SVN_ERR_RA_NOT_AUTHORIZED, NULL,
>  >                                        sasl_errdetail(sasl_ctx));
>  >    SVN_ERR(svn_ra_svn_write_cmd_failure(conn, pool, err));
>  >  +  svn_error_clear(err);
>
>  This still leaves an error leak when the
>  svn_ra_svn_write_cmd_failure() function fails. Same in the other
>  cases. It's probably better to catch the result from
>  svn_ra_svn_write_cmd_failure() in order to be able to clear err and
>  return the result.

Right, r29663.

--dave

>  >    return svn_ra_svn_flush(conn, pool);
>  >   }
>  >
>  >  @@ -242,6 +243,7 @@
>  >      {
>  >        svn_error_t *err = svn_error_wrap_apr(apr_err, _("Can't get hostname"));
>  >        SVN_ERR(svn_ra_svn_write_cmd_failure(conn, pool, err));
>  >  +      svn_error_clear(err);
>  >        return svn_ra_svn_flush(conn, pool);
>  >      }
>  >
>  >  @@ -257,6 +259,7 @@
>  >        svn_error_t *err = svn_error_create(SVN_ERR_RA_NOT_AUTHORIZED, NULL,
>  >                                            sasl_errstring(result, NULL, NULL));
>  >        SVN_ERR(svn_ra_svn_write_cmd_failure(conn, pool, err));
>  >  +      svn_error_clear(err);
>  >        return svn_ra_svn_flush(conn, pool);
>  >      }
>  >
>  >  @@ -311,6 +314,7 @@
>  >                                            _("Could not obtain the list"
>  >                                            " of SASL mechanisms"));
>  >        SVN_ERR(svn_ra_svn_write_cmd_failure(conn, pool, err));
>  >  +      svn_error_clear(err);
>  >        return svn_ra_svn_flush(conn, pool);
>  >      }
>  >
>  >  @@ -351,6 +355,7 @@
>  >                                   _("Couldn't obtain the authenticated"
>  >                                   " username"));
>  >            SVN_ERR(svn_ra_svn_write_cmd_failure(conn, pool, err));
>  >  +          svn_error_clear(err);
>  >            return svn_ra_svn_flush(conn, pool);
>  >          }
>  >      }
>
>  Bye,
>
>
>  Erik.
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
>  For additional commands, e-mail: dev-help@subversion.tigris.org
>
>



-- 
David Glasser | glasser@davidglasser.net | http://www.davidglasser.net/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org