pgsql: Add more sanity checks in SASL exchanges

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Add more sanity checks in SASL exchanges
Date: 2021-07-10 12:49:14
Message-ID: E1m2CPy-000837-Lw@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Add more sanity checks in SASL exchanges

The following checks are added, to make the SASL infrastructure more
aware of defects when implementing new mechanisms:
- Detect that no output is generated by a mechanism if an exchange fails
in the backend, failing if there is a message waiting to be sent.
- Handle zero-length messages in the frontend. The backend handles that
already, and SCRAM would complain if sending empty messages as this is
not authorized for this mechanism, but other mechanisms may want this
capability (the SASL specification allows that).
- Make sure that a mechanism generates a message in the middle of the
exchange in the frontend.

SCRAM, as implemented, respects all these requirements already, and the
recent refactoring of SASL done in 9fd8557 helps in documenting that in
a cleaner way.

Analyzed-by: Jacob Champion
Author: Michael Paquier
Reviewed-by: Jacob Champion
Discussion: https://postgr.es/m/3d2a6f5d50e741117d6baf83eb67ebf1a8a35a11.camel@vmware.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/44bd0126c70b5b90e8e2d604833a6476abbbffe6

Modified Files
--------------
src/backend/libpq/auth-sasl.c | 7 +++++++
src/interfaces/libpq/fe-auth-sasl.h | 9 +++++----
src/interfaces/libpq/fe-auth.c | 17 ++++++++++++++++-
3 files changed, 28 insertions(+), 5 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2021-07-10 15:01:12 Re: pgsql: Fix numeric_mul() overflow due to too many digits after decimal
Previous Message Dean Rasheed 2021-07-10 11:54:15 pgsql: Fix numeric_mul() overflow due to too many digits after decimal