mirror of
https://github.com/postgres/postgres.git
synced 2025-05-01 01:04:50 +03:00
Pay attention to failure returns from fgets() in all cases.
Avoid infinite loop prompting for password at stdin EOF.
This commit is contained in:
parent
e8a72c0db2
commit
9c5327b99b
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright 2000 by PostgreSQL Global Development Group
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.40 2000/11/26 11:09:32 petere Exp $
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.41 2000/11/27 02:20:36 tgl Exp $
|
||||
*/
|
||||
#include "postgres.h"
|
||||
#include "command.h"
|
||||
@ -1236,7 +1236,8 @@ do_connect(const char *new_dbname, const char *new_user)
|
||||
NULL, NULL, dbparam, userparam, pwparam);
|
||||
|
||||
if (PQstatus(pset.db) == CONNECTION_BAD &&
|
||||
strcmp(PQerrorMessage(pset.db), "fe_sendauth: no password supplied\n") == 0)
|
||||
strcmp(PQerrorMessage(pset.db), "fe_sendauth: no password supplied\n") == 0 &&
|
||||
!feof(stdin))
|
||||
{
|
||||
PQfinish(pset.db);
|
||||
need_pass = true;
|
||||
@ -1491,7 +1492,7 @@ do_edit(const char *filename_arg, PQExpBuffer query_buf)
|
||||
char line[1024];
|
||||
|
||||
resetPQExpBuffer(query_buf);
|
||||
while (fgets(line, 1024, stream))
|
||||
while (fgets(line, sizeof(line), stream) != NULL)
|
||||
appendPQExpBufferStr(query_buf, line);
|
||||
|
||||
if (ferror(stream))
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright 2000 by PostgreSQL Global Development Group
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.26 2000/11/27 01:28:40 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.27 2000/11/27 02:20:36 tgl Exp $
|
||||
*/
|
||||
#include "postgres.h"
|
||||
#include "common.h"
|
||||
@ -201,7 +201,8 @@ simple_prompt(const char *prompt, int maxlen, bool echo)
|
||||
}
|
||||
#endif
|
||||
|
||||
fgets(destination, maxlen, stdin);
|
||||
if (fgets(destination, maxlen, stdin) == NULL)
|
||||
destination[0] = '\0';
|
||||
|
||||
#ifdef HAVE_TERMIOS_H
|
||||
if (!echo)
|
||||
@ -222,7 +223,8 @@ simple_prompt(const char *prompt, int maxlen, bool echo)
|
||||
|
||||
do
|
||||
{
|
||||
fgets(buf, sizeof(buf), stdin);
|
||||
if (fgets(buf, sizeof(buf), stdin) == NULL)
|
||||
break;
|
||||
buflen = strlen(buf);
|
||||
} while (buflen > 0 && buf[buflen - 1] != '\n');
|
||||
}
|
||||
@ -389,9 +391,9 @@ SendQuery(const char *query)
|
||||
"***(press return to proceed or enter x and return to cancel)********************\n",
|
||||
query);
|
||||
fflush(stdout);
|
||||
fgets(buf, 3, stdin);
|
||||
if (buf[0] == 'x')
|
||||
return false;
|
||||
if (fgets(buf, sizeof(buf), stdin) != NULL)
|
||||
if (buf[0] == 'x')
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright 2000 by PostgreSQL Global Development Group
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/input.c,v 1.13 2000/04/12 17:16:22 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/input.c,v 1.14 2000/11/27 02:20:36 tgl Exp $
|
||||
*/
|
||||
#include "postgres.h"
|
||||
#include "input.h"
|
||||
@ -91,7 +91,7 @@ gets_fromFile(FILE *source)
|
||||
|
||||
initPQExpBuffer(&buffer);
|
||||
|
||||
while (fgets(line, 1024, source) != NULL)
|
||||
while (fgets(line, sizeof(line), source) != NULL)
|
||||
{
|
||||
appendPQExpBufferStr(&buffer, line);
|
||||
if (buffer.data[buffer.len - 1] == '\n')
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright 2000 by PostgreSQL Global Development Group
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/prompt.c,v 1.15 2000/11/13 23:37:53 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/prompt.c,v 1.16 2000/11/27 02:20:36 tgl Exp $
|
||||
*/
|
||||
#include "postgres.h"
|
||||
#include "prompt.h"
|
||||
@ -277,7 +277,7 @@ get_prompt(promptStatus_t status)
|
||||
fgets(buf, MAX_PROMPT_SIZE - 1, fd);
|
||||
pclose(fd);
|
||||
}
|
||||
if (buf[strlen(buf) - 1] == '\n')
|
||||
if (strlen(buf) > 0 && buf[strlen(buf) - 1] == '\n')
|
||||
buf[strlen(buf) - 1] = '\0';
|
||||
free(file);
|
||||
p += cmdend + 1;
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright 2000 by PostgreSQL Global Development Group
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.40 2000/11/25 19:05:44 petere Exp $
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.41 2000/11/27 02:20:36 tgl Exp $
|
||||
*/
|
||||
#include "postgres.h"
|
||||
|
||||
@ -180,7 +180,8 @@ main(int argc, char *argv[])
|
||||
username, password);
|
||||
|
||||
if (PQstatus(pset.db) == CONNECTION_BAD &&
|
||||
strcmp(PQerrorMessage(pset.db), "fe_sendauth: no password supplied\n") == 0)
|
||||
strcmp(PQerrorMessage(pset.db), "fe_sendauth: no password supplied\n") == 0 &&
|
||||
!feof(stdin))
|
||||
{
|
||||
PQfinish(pset.db);
|
||||
need_pass = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user