From a4c8f14364c27508233f8a31ac4b10a4c90235a9 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 20 Mar 2014 11:48:31 -0400 Subject: libpq: pass a memory allocation failure error up to PQconndefaults() Previously user name memory allocation failures were ignored and the default user name set to NULL. --- src/interfaces/libpq/fe-auth.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src/interfaces/libpq/fe-auth.c') diff --git a/src/interfaces/libpq/fe-auth.c b/src/interfaces/libpq/fe-auth.c index e10c9709108..5ddd17d5df7 100644 --- a/src/interfaces/libpq/fe-auth.c +++ b/src/interfaces/libpq/fe-auth.c @@ -741,16 +741,18 @@ pg_fe_getauthname(void) */ pglock_thread(); - if (!name) - { + /* + * We document PQconndefaults() to return NULL for a memory allocation + * failure. We don't have an API to return a user name lookup failure, + * so we just assume it always succeeds. + */ #ifdef WIN32 - if (GetUserName(username, &namesize)) - name = username; + if (GetUserName(username, &namesize)) + name = username; #else - if (pqGetpwuid(geteuid(), &pwdstr, pwdbuf, sizeof(pwdbuf), &pw) == 0) - name = pw->pw_name; + if (pqGetpwuid(geteuid(), &pwdstr, pwdbuf, sizeof(pwdbuf), &pw) == 0) + name = pw->pw_name; #endif - } authn = name ? strdup(name) : NULL; -- cgit v1.2.3