From dc7a0009f0b12fcae2cd6895552f8b8660d3551c Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Sat, 27 Jan 2001 10:19:52 +0000
Subject: [PATCH] Add permission check for CHECKPOINT.

---
 doc/src/sgml/ref/checkpoint.sgml | 7 ++++++-
 src/backend/tcop/utility.c       | 5 ++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/ref/checkpoint.sgml b/doc/src/sgml/ref/checkpoint.sgml
index 83df9e6537f..021035888b4 100644
--- a/doc/src/sgml/ref/checkpoint.sgml
+++ b/doc/src/sgml/ref/checkpoint.sgml
@@ -1,4 +1,4 @@
-<!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/checkpoint.sgml,v 1.2 2001/01/24 21:56:23 petere Exp $ -->
+<!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/checkpoint.sgml,v 1.3 2001/01/27 10:19:52 petere Exp $ -->
 
 <refentry id="sql-checkpoint">
  <docinfo>
@@ -40,6 +40,11 @@ CHECKPOINT
    <citetitle>PostgreSQL Administrator's Guide</citetitle> for more
    information about the WAL system.
   </para>
+
+  <para>
+   Only superusers may call <command>CHECKPOINT</command>.  The command is
+   not intended for use during normal operation.
+  </para>
  </refsect1>
 
  <refsect1>
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index c886140c453..65b6baf535e 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.106 2001/01/24 19:43:11 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.107 2001/01/27 10:19:52 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -18,6 +18,7 @@
 
 #include "access/heapam.h"
 #include "catalog/catalog.h"
+#include "catalog/pg_shadow.h"
 #include "commands/async.h"
 #include "commands/cluster.h"
 #include "commands/command.h"
@@ -851,6 +852,8 @@ ProcessUtility(Node *parsetree,
 			{
 				set_ps_display(commandTag = "CHECKPOINT");
 
+				if (!superuser())
+					elog(ERROR, "permission denied");
 				CreateCheckPoint(false);
 			}
 			break;
-- 
GitLab