Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/sepgsql')
-rw-r--r--contrib/sepgsql/hooks.c4
-rw-r--r--contrib/sepgsql/label.c22
-rw-r--r--contrib/sepgsql/selinux.c4
-rw-r--r--contrib/sepgsql/uavc.c5
4 files changed, 8 insertions, 27 deletions
diff --git a/contrib/sepgsql/hooks.c b/contrib/sepgsql/hooks.c
index 992c70e8a06..49f32ac4d33 100644
--- a/contrib/sepgsql/hooks.c
+++ b/contrib/sepgsql/hooks.c
@@ -372,13 +372,11 @@ sepgsql_utility_command(PlannedStmt *pstmt,
context, params, queryEnv,
dest, completionTag);
}
- PG_CATCH();
+ PG_FINALLY();
{
sepgsql_context_info = saved_context_info;
- PG_RE_THROW();
}
PG_END_TRY();
- sepgsql_context_info = saved_context_info;
}
/*
diff --git a/contrib/sepgsql/label.c b/contrib/sepgsql/label.c
index d2505f7f343..d8a1d129d29 100644
--- a/contrib/sepgsql/label.c
+++ b/contrib/sepgsql/label.c
@@ -465,14 +465,11 @@ sepgsql_get_label(Oid classId, Oid objectId, int32 subId)
{
label = pstrdup(unlabeled);
}
- PG_CATCH();
+ PG_FINALLY();
{
freecon(unlabeled);
- PG_RE_THROW();
}
PG_END_TRY();
-
- freecon(unlabeled);
}
return label;
}
@@ -600,13 +597,11 @@ sepgsql_mcstrans_in(PG_FUNCTION_ARGS)
{
result = pstrdup(raw_label);
}
- PG_CATCH();
+ PG_FINALLY();
{
freecon(raw_label);
- PG_RE_THROW();
}
PG_END_TRY();
- freecon(raw_label);
PG_RETURN_TEXT_P(cstring_to_text(result));
}
@@ -640,13 +635,11 @@ sepgsql_mcstrans_out(PG_FUNCTION_ARGS)
{
result = pstrdup(qual_label);
}
- PG_CATCH();
+ PG_FINALLY();
{
freecon(qual_label);
- PG_RE_THROW();
}
PG_END_TRY();
- freecon(qual_label);
PG_RETURN_TEXT_P(cstring_to_text(result));
}
@@ -851,13 +844,11 @@ exec_object_restorecon(struct selabel_handle *sehnd, Oid catalogId)
SetSecurityLabel(&object, SEPGSQL_LABEL_TAG, context);
}
- PG_CATCH();
+ PG_FINALLY();
{
freecon(context);
- PG_RE_THROW();
}
PG_END_TRY();
- freecon(context);
}
else if (errno == ENOENT)
ereport(WARNING,
@@ -937,14 +928,11 @@ sepgsql_restorecon(PG_FUNCTION_ARGS)
exec_object_restorecon(sehnd, AttributeRelationId);
exec_object_restorecon(sehnd, ProcedureRelationId);
}
- PG_CATCH();
+ PG_FINALLY();
{
selabel_close(sehnd);
- PG_RE_THROW();
}
PG_END_TRY();
- selabel_close(sehnd);
-
PG_RETURN_BOOL(true);
}
diff --git a/contrib/sepgsql/selinux.c b/contrib/sepgsql/selinux.c
index 192aabea0b3..b7c489cc336 100644
--- a/contrib/sepgsql/selinux.c
+++ b/contrib/sepgsql/selinux.c
@@ -871,13 +871,11 @@ sepgsql_compute_create(const char *scontext,
{
result = pstrdup(ncontext);
}
- PG_CATCH();
+ PG_FINALLY();
{
freecon(ncontext);
- PG_RE_THROW();
}
PG_END_TRY();
- freecon(ncontext);
return result;
}
diff --git a/contrib/sepgsql/uavc.c b/contrib/sepgsql/uavc.c
index 8ce0bc631b7..f5279cc9b6e 100644
--- a/contrib/sepgsql/uavc.c
+++ b/contrib/sepgsql/uavc.c
@@ -181,14 +181,11 @@ sepgsql_avc_unlabeled(void)
{
avc_unlabeled = MemoryContextStrdup(avc_mem_cxt, unlabeled);
}
- PG_CATCH();
+ PG_FINALLY();
{
freecon(unlabeled);
- PG_RE_THROW();
}
PG_END_TRY();
-
- freecon(unlabeled);
}
return avc_unlabeled;
}