diff --git a/src/interfaces/libpq/fe-auth.c b/src/interfaces/libpq/fe-auth.c new file mode 100644 index e10c970..3312678 *** a/src/interfaces/libpq/fe-auth.c --- b/src/interfaces/libpq/fe-auth.c *************** pg_fe_getauthname(void) *** 741,756 **** */ pglock_thread(); - if (!name) - { #ifdef WIN32 ! if (GetUserName(username, &namesize)) ! name = username; #else ! if (pqGetpwuid(geteuid(), &pwdstr, pwdbuf, sizeof(pwdbuf), &pw) == 0) ! name = pw->pw_name; #endif - } authn = name ? strdup(name) : NULL; --- 741,753 ---- */ pglock_thread(); #ifdef WIN32 ! if (GetUserName(username, &namesize)) ! name = username; #else ! if (pqGetpwuid(geteuid(), &pwdstr, pwdbuf, sizeof(pwdbuf), &pw) == 0) ! name = pw->pw_name; #endif authn = name ? strdup(name) : NULL; diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c new file mode 100644 index 1f0eeaf..669bcf5 *** a/src/interfaces/libpq/fe-connect.c --- b/src/interfaces/libpq/fe-connect.c *************** conninfo_add_defaults(PQconninfoOption * *** 4483,4488 **** --- 4483,4495 ---- if (strcmp(option->keyword, "user") == 0) { option->val = pg_fe_getauthname(); + if (!option->val) + { + if (errorMessage) + printfPQExpBuffer(errorMessage, + libpq_gettext("out of memory\n")); + return false; + } continue; } }