diff options
Diffstat (limited to 'contrib/pg_audit/pg_audit.c')
| -rw-r--r-- | contrib/pg_audit/pg_audit.c | 76 |
1 files changed, 26 insertions, 50 deletions
diff --git a/contrib/pg_audit/pg_audit.c b/contrib/pg_audit/pg_audit.c index a664d0804b..ffe13eb6b3 100644 --- a/contrib/pg_audit/pg_audit.c +++ b/contrib/pg_audit/pg_audit.c @@ -212,19 +212,19 @@ typedef struct int64 statementId; /* Simple counter */ int64 substatementId; /* Simple counter */ - LogStmtLevel logStmtLevel; /* From GetCommandLogLevel when possible, */ - /* generated when not. */ + LogStmtLevel logStmtLevel; /* From GetCommandLogLevel when possible, + * generated when not. */ NodeTag commandTag; /* same here */ const char *command; /* same here */ - const char *objectType; /* From event trigger when possible */ - /* generated when not. */ + const char *objectType; /* From event trigger when possible, generated + * when not. */ char *objectName; /* Fully qualified object identification */ const char *commandText; /* sourceText / queryString */ ParamListInfo paramList; /* QueryDesc/ProcessUtility parameters */ bool granted; /* Audit role has object permissions? */ - bool logged; /* Track if we have logged this event, used */ - /* post-ProcessUtility to make sure we log */ + bool logged; /* Track if we have logged this event, used + * post-ProcessUtility to make sure we log */ bool statementLogged; /* Track if we have logged the statement */ } AuditEvent; @@ -467,7 +467,7 @@ log_audit_event(AuditEventStackItem *stackItem) /* Classify the statement using log stmt level and the command tag */ switch (stackItem->auditEvent.logStmtLevel) { - /* All mods go in WRITE class, execpt EXECUTE */ + /* All mods go in WRITE class, except EXECUTE */ case LOGSTMT_MOD: className = CLASS_WRITE; class = LOG_WRITE; @@ -553,13 +553,14 @@ log_audit_event(AuditEventStackItem *stackItem) break; } - /* + /*---------- * Only log the statement if: * - * 1. If object was selected for audit logging (granted) 2. The statement - * belongs to a class that is being logged + * 1. If object was selected for audit logging (granted), or + * 2. The statement belongs to a class that is being logged * * If neither of these is true, return. + *---------- */ if (!stackItem->auditEvent.granted && !(auditLogBitmap & class)) return; @@ -979,57 +980,39 @@ log_select_dml(Oid auditOid, List *rangeTabls) switch (rte->relkind) { case RELKIND_RELATION: - auditEventStack->auditEvent.objectType = - OBJECT_TYPE_TABLE; - + auditEventStack->auditEvent.objectType = OBJECT_TYPE_TABLE; break; case RELKIND_INDEX: - auditEventStack->auditEvent.objectType = - OBJECT_TYPE_INDEX; - + auditEventStack->auditEvent.objectType = OBJECT_TYPE_INDEX; break; case RELKIND_SEQUENCE: - auditEventStack->auditEvent.objectType = - OBJECT_TYPE_SEQUENCE; - + auditEventStack->auditEvent.objectType = OBJECT_TYPE_SEQUENCE; break; case RELKIND_TOASTVALUE: - auditEventStack->auditEvent.objectType = - OBJECT_TYPE_TOASTVALUE; - + auditEventStack->auditEvent.objectType = OBJECT_TYPE_TOASTVALUE; break; case RELKIND_VIEW: - auditEventStack->auditEvent.objectType = - OBJECT_TYPE_VIEW; - + auditEventStack->auditEvent.objectType = OBJECT_TYPE_VIEW; break; case RELKIND_COMPOSITE_TYPE: - auditEventStack->auditEvent.objectType = - OBJECT_TYPE_COMPOSITE_TYPE; - + auditEventStack->auditEvent.objectType = OBJECT_TYPE_COMPOSITE_TYPE; break; case RELKIND_FOREIGN_TABLE: - auditEventStack->auditEvent.objectType = - OBJECT_TYPE_FOREIGN_TABLE; - + auditEventStack->auditEvent.objectType = OBJECT_TYPE_FOREIGN_TABLE; break; case RELKIND_MATVIEW: - auditEventStack->auditEvent.objectType = - OBJECT_TYPE_MATVIEW; - + auditEventStack->auditEvent.objectType = OBJECT_TYPE_MATVIEW; break; default: - auditEventStack->auditEvent.objectType = - OBJECT_TYPE_UNKNOWN; - + auditEventStack->auditEvent.objectType = OBJECT_TYPE_UNKNOWN; break; } @@ -1043,9 +1026,7 @@ log_select_dml(Oid auditOid, List *rangeTabls) /* Perform object auditing only if the audit role is valid */ if (auditOid != InvalidOid) { - AclMode auditPerms = - (ACL_SELECT | ACL_UPDATE | ACL_INSERT | ACL_DELETE) & - rte->requiredPerms; + AclMode auditPerms = (ACL_SELECT | ACL_UPDATE | ACL_INSERT | ACL_DELETE) & rte->requiredPerms; /* * If any of the required permissions for the relation are granted @@ -1166,7 +1147,6 @@ log_function_execute(Oid objectId) stackItem->auditEvent.commandTag = T_DoStmt; stackItem->auditEvent.command = COMMAND_EXECUTE; stackItem->auditEvent.objectType = OBJECT_TYPE_FUNCTION; - stackItem->auditEvent.commandText = stackItem->next->auditEvent.commandText; log_audit_event(stackItem); @@ -1459,8 +1439,7 @@ pg_audit_ddl_command_end(PG_FUNCTION_ARGS) /* Supply object name and type for audit event */ auditEventStack->auditEvent.objectType = - SPI_getvalue(spiTuple, spiTupDesc, 1); - + SPI_getvalue(spiTuple, spiTupDesc, 1); auditEventStack->auditEvent.objectName = SPI_getvalue(spiTuple, spiTupDesc, 2); @@ -1545,8 +1524,7 @@ pg_audit_sql_drop(PG_FUNCTION_ARGS) spiTuple = SPI_tuptable->vals[row]; auditEventStack->auditEvent.objectType = - SPI_getvalue(spiTuple, spiTupDesc, 1); - + SPI_getvalue(spiTuple, spiTupDesc, 1); auditEventStack->auditEvent.objectName = SPI_getvalue(spiTuple, spiTupDesc, 2); @@ -1603,16 +1581,14 @@ check_pg_audit_log(char **newVal, void **extra, GucSource source) foreach(lt, flagRawList) { + char *token = (char *) lfirst(lt); bool subtract = false; int class; - /* Retrieve a token */ - char *token = (char *) lfirst(lt); - /* If token is preceded by -, then the token is subtractive */ - if (strstr(token, "-") == token) + if (token[0] == '-') { - token = token + 1; + token++; subtract = true; } |
