diff --git a/src/bin/pg_dump/pg_backup_db.c b/src/bin/pg_dump/pg_backup_db.c
index 5968c20..5f07e51 100644
--- a/src/bin/pg_dump/pg_backup_db.c
+++ b/src/bin/pg_dump/pg_backup_db.c
@@ -192,7 +192,8 @@ _connectDB(ArchiveHandle *AH, const char *reqdb, const char *requser)
 		}
 	} while (new_pass);
 
-	AH->savedPassword = password;
+	if (PQconnectionUsedPassword(newConn))
+		AH->savedPassword = pg_strdup(PQpass(newConn));
 
 	/* check for version mismatch */
 	_check_database_version(AH);
@@ -282,7 +283,8 @@ ConnectDatabase(Archive *AHX,
 		}
 	} while (new_pass);
 
-	AH->savedPassword = password;
+	if (PQconnectionUsedPassword(AH->connection))
+		AH->savedPassword = pg_strdup(PQpass(AH->connection));
 
 	/* check to see that the backend connection was successfully made */
 	if (PQstatus(AH->connection) == CONNECTION_BAD)
