diff options
author | Robert Haas | 2011-01-24 03:47:16 +0000 |
---|---|---|
committer | Robert Haas | 2011-01-24 03:48:22 +0000 |
commit | 194c8f713aa62a528afa4ce4274b80aaff9eb264 (patch) | |
tree | f00353f6087df8306040da3ba3c692c77eaa76f0 /contrib | |
parent | 968bc6fac91d6aaca594488ab85c179b686cbbdd (diff) |
First round of cleanup of sepgsql code and documentation.
Robert Haas, with a few suggestions from Thom Brown
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/sepgsql/.gitignore | 4 | ||||
-rw-r--r-- | contrib/sepgsql/dml.c | 4 | ||||
-rw-r--r-- | contrib/sepgsql/hooks.c | 10 | ||||
-rw-r--r-- | contrib/sepgsql/label.c | 41 |
4 files changed, 30 insertions, 29 deletions
diff --git a/contrib/sepgsql/.gitignore b/contrib/sepgsql/.gitignore index 1e4a297b09b..811143c074c 100644 --- a/contrib/sepgsql/.gitignore +++ b/contrib/sepgsql/.gitignore @@ -1 +1,5 @@ /sepgsql.sql +/sepgsql-regtest.fc +/sepgsql-regtest.if +/sepgsql-regtest.pp +/tmp diff --git a/contrib/sepgsql/dml.c b/contrib/sepgsql/dml.c index cfa436d37d9..684b5ee8e61 100644 --- a/contrib/sepgsql/dml.c +++ b/contrib/sepgsql/dml.c @@ -171,12 +171,12 @@ check_relation_privileges(Oid relOid, SEPG_DB_TABLE__DELETE)) != 0) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("selinux: hardwired security policy violation"))); + errmsg("SELinux: hardwired security policy violation"))); if (relkind == RELKIND_TOASTVALUE) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("selinux: hardwired security policy violation"))); + errmsg("SELinux: hardwired security policy violation"))); } /* diff --git a/contrib/sepgsql/hooks.c b/contrib/sepgsql/hooks.c index 6b55e484cfd..bc7ce51cf15 100644 --- a/contrib/sepgsql/hooks.c +++ b/contrib/sepgsql/hooks.c @@ -91,7 +91,7 @@ sepgsql_client_auth(Port *port, int status) if (getpeercon_raw(port->sock, &context) < 0) ereport(FATAL, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("selinux: failed to get the peer label"))); + errmsg("SELinux: unable to get peer label"))); sepgsql_set_client_label(context); @@ -318,7 +318,7 @@ sepgsql_utility_command(Node *parsetree, { ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("SELinux: LOAD is not allowed anyway."))); + errmsg("SELinux: LOAD is not permitted"))); } break; default: @@ -352,8 +352,8 @@ _PG_init(void) */ if (IsUnderPostmaster) ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("Not allowed to load SE-PostgreSQL now"))); + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("sepgsql must be loaded via shared_preload_libraries"))); /* * Check availability of SELinux on the platform. @@ -414,7 +414,7 @@ _PG_init(void) if (getcon_raw(&context) < 0) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("selinux: unable to get security label of server"))); + errmsg("SELinux: failed to get server security label"))); sepgsql_set_client_label(context); /* Security label provider hook */ diff --git a/contrib/sepgsql/label.c b/contrib/sepgsql/label.c index bc28adfea55..ad568f8aa6b 100644 --- a/contrib/sepgsql/label.c +++ b/contrib/sepgsql/label.c @@ -81,7 +81,7 @@ sepgsql_get_label(Oid classId, Oid objectId, int32 subId) if (security_get_initial_context_raw("unlabeled", &unlabeled) < 0) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("selinux: unable to get initial security label"))); + errmsg("SELinux: failed to get initial security label"))); PG_TRY(); { label = pstrdup(unlabeled); @@ -114,7 +114,7 @@ sepgsql_object_relabel(const ObjectAddress *object, const char *seclabel) security_check_context_raw((security_context_t) seclabel) < 0) ereport(ERROR, (errcode(ERRCODE_INVALID_NAME), - errmsg("invalid security label: \"%s\"", seclabel))); + errmsg("SELinux: invalid security label: \"%s\"", seclabel))); /* * Do actual permission checks for each object classes */ @@ -154,13 +154,11 @@ sepgsql_getcon(PG_FUNCTION_ARGS) char *client_label; if (!sepgsql_is_enabled()) - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("SELinux: now disabled"))); + PG_RETURN_NULL(); client_label = sepgsql_get_client_label(); - PG_RETURN_POINTER(cstring_to_text(client_label)); + PG_RETURN_TEXT_P(cstring_to_text(client_label)); } /* @@ -179,14 +177,14 @@ sepgsql_mcstrans_in(PG_FUNCTION_ARGS) if (!sepgsql_is_enabled()) ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("SELinux: now disabled"))); + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("sepgsql is not enabled"))); if (selinux_trans_to_raw_context(text_to_cstring(label), &raw_label) < 0) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("SELinux: internal error on mcstrans"))); + errmsg("SELinux: could not translate security label"))); PG_TRY(); { @@ -200,7 +198,7 @@ sepgsql_mcstrans_in(PG_FUNCTION_ARGS) PG_END_TRY(); freecon(raw_label); - PG_RETURN_POINTER(cstring_to_text(result)); + PG_RETURN_TEXT_P(cstring_to_text(result)); } /* @@ -219,14 +217,14 @@ sepgsql_mcstrans_out(PG_FUNCTION_ARGS) if (!sepgsql_is_enabled()) ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("SELinux: now disabled"))); + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("sepgsql is not currently enabled"))); if (selinux_raw_to_trans_context(text_to_cstring(label), &qual_label) < 0) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("SELinux: internal error on mcstrans"))); + errmsg("SELinux: could not translate security label"))); PG_TRY(); { @@ -240,7 +238,7 @@ sepgsql_mcstrans_out(PG_FUNCTION_ARGS) PG_END_TRY(); freecon(qual_label); - PG_RETURN_POINTER(cstring_to_text(result)); + PG_RETURN_TEXT_P(cstring_to_text(result)); } /* @@ -360,8 +358,7 @@ exec_object_restorecon(struct selabel_handle *sehnd, Oid catalogId) break; default: - elog(ERROR, "Bug? %u is not supported to set initial labels", - catalogId); + elog(ERROR, "unexpected catalog id: %u", catalogId); break; } @@ -387,12 +384,12 @@ exec_object_restorecon(struct selabel_handle *sehnd, Oid catalogId) } else if (errno == ENOENT) ereport(WARNING, - (errmsg("no valid initial label on %s (type=%d), skipped", + (errmsg("SELinux: no initial label assigned for %s (type=%d), skipping", objname, objtype))); else ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("libselinux: internal error"))); + errmsg("SELinux: could not determine initial security label for %s (type=%d)", objname, objtype))); } systable_endscan(sscan); @@ -422,8 +419,8 @@ sepgsql_restorecon(PG_FUNCTION_ARGS) */ if (!sepgsql_is_enabled()) ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("SELinux: now disabled"))); + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("sepgsql is not currently enabled"))); /* * Check DAC permission. Only superuser can set up initial * security labels, like root-user in filesystems @@ -431,7 +428,7 @@ sepgsql_restorecon(PG_FUNCTION_ARGS) if (!superuser()) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("must be superuser to restore initial contexts"))); + errmsg("SELinux: must be superuser to restore initial contexts"))); /* * Open selabel_lookup(3) stuff. It provides a set of mapping @@ -452,7 +449,7 @@ sepgsql_restorecon(PG_FUNCTION_ARGS) if (!sehnd) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("SELinux internal error"))); + errmsg("SELinux: failed to initialize labeling handle"))); PG_TRY(); { /* |