Fix bug in checking permissions on table being COPY'd.

This commit is contained in:
Bryan Henderson 1996-11-02 02:03:13 +00:00
parent d27c28fdc0
commit fa608ad2a6
1 changed files with 112 additions and 136 deletions

View File

@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.3 1996/10/31 09:08:10 bryanh Exp $
* $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.4 1996/11/02 02:03:13 bryanh Exp $
*
*-------------------------------------------------------------------------
*/
@ -196,47 +196,23 @@ ProcessUtility(Node *parsetree,
case T_CopyStmt:
{
CopyStmt *stmt = (CopyStmt *)parsetree;
char *filename;
char *delim;
bool isBinary;
bool isOids;
bool isFrom;
bool pipe = false;
commandTag = "COPY";
CHECK_IF_ABORTED();
relname = stmt->relname;
isBinary = stmt->binary;
isOids = stmt->oids;
isFrom = (bool)(stmt->direction == FROM);
filename = stmt->filename;
delim = stmt->delimiter;
#ifndef NO_SECURITY
if (isFrom) {
if (!pg_aclcheck(relname, userName, ACL_RD))
elog(WARN, "%s %s", relname, ACL_NO_PRIV_WARNING);
} else {
if (!pg_aclcheck(relname, userName, ACL_WR))
elog(WARN, "%s %s", relname, ACL_NO_PRIV_WARNING);
}
#endif
/* Free up file descriptors - going to do a read... */
closeOneVfd();
/*
* use stdin/stdout if filename is null.
DoCopy(stmt->relname,
stmt->binary,
stmt->oids,
(bool)(stmt->direction == FROM),
(bool)(stmt->filename == NULL),
/* null filename means copy to/from stdout/stdin,
rather than to/from a file.
*/
if (filename == NULL)
pipe = true;
if (pipe && IsUnderPostmaster) dest = CopyEnd;
DoCopy(relname, isBinary, isOids, isFrom, pipe, filename, delim);
stmt->filename,
stmt->delimiter);
}
break;