• Michael Paquier's avatar
    Introduce safer encoding and decoding routines for base64.c · cfc40d38
    Michael Paquier authored
    This is a follow-up refactoring after 09ec55b9 and b6742117, which has
    proved that the encoding and decoding routines used by SCRAM have a
    poor interface when it comes to check after buffer overflows.  This adds
    an extra argument in the shape of the length of the result buffer for
    each routine, which is used for overflow checks when encoding or
    decoding an input string.  The original idea comes from Tom Lane.
    
    As a result of that, the encoding routine can now fail, so all its
    callers are adjusted to generate proper error messages in case of
    problems.
    
    On failure, the result buffer gets zeroed.
    
    Author: Michael Paquier
    Reviewed-by: Daniel Gustafsson
    Discussion: https://postgr.es/m/20190623132535.GB1628@paquier.xyz
    cfc40d38
fe-auth-scram.c 20.4 KB