• Tom Lane's avatar
    Fix simple_prompt() to disable echo on Windows when stdin != terminal. · 50485b3e
    Tom Lane authored
    If echo = false, simple_prompt() is supposed to prevent echoing the
    input (for password input).  However, the Windows implementation applied
    the mode change to STD_INPUT_HANDLE.  That would not have the desired
    effect if stdin isn't actually the terminal, for instance if the user
    is piping something into psql.  Fix it to apply the mode change to
    the correct input file, so that passwords do not echo in such cases.
    
    In passing, shorten and de-uglify this code by using #elif rather than
    an #if nest and removing some duplicated code.
    
    Back-patch to all supported versions.  To simplify that, also back-patch
    the portions of commit 9daec77e that got rid of an unnecessary
    malloc/free in the same area.
    
    Matthew Stickney (cosmetic changes by me)
    
    Discussion: https://postgr.es/m/502a1fff-862b-da52-1031-f68df6ed5a2d@gmail.com
    50485b3e
sprompt.c 4.38 KB