index e10c97091087515f00b1d5d13ec5f8cfbe2b78a8..5ddd17d5df7eb96acceb4bb8c5f005492a1807b5 100644 (file)
*/
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;
index da8335e6805ac576596f7761d9fa9d1253309d92..d53c41f6a3d742a66908f400b44539fc1595ae78 100644 (file)
@@ -4482,6 +4482,13 @@ conninfo_add_defaults(PQconninfoOption *options, PQExpBuffer errorMessage)
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;
}
}