Age Owner Branch data TLA Line data Source code
1 : : /*
2 : : * dummy_seclabel.c
3 : : *
4 : : * Dummy security label provider.
5 : : *
6 : : * This module does not provide anything worthwhile from a security
7 : : * perspective, but allows regression testing independent of platform-specific
8 : : * features like SELinux.
9 : : *
10 : : * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
11 : : * Portions Copyright (c) 1994, Regents of the University of California
12 : : */
13 : : #include "postgres.h"
14 : :
15 : : #include "commands/seclabel.h"
16 : : #include "fmgr.h"
17 : : #include "miscadmin.h"
18 : : #include "utils/rel.h"
19 : :
4948 rhaas@postgresql.org 20 :CBC 1 : PG_MODULE_MAGIC;
21 : :
3421 alvherre@alvh.no-ip. 22 : 1 : PG_FUNCTION_INFO_V1(dummy_seclabel_dummy);
23 : :
24 : : static void
4948 rhaas@postgresql.org 25 : 18 : dummy_object_relabel(const ObjectAddress *object, const char *seclabel)
26 : : {
27 [ + - ]: 18 : if (seclabel == NULL ||
28 [ + + ]: 18 : strcmp(seclabel, "unclassified") == 0 ||
29 [ + + ]: 14 : strcmp(seclabel, "classified") == 0)
30 : 13 : return;
31 : :
32 [ + + ]: 5 : if (strcmp(seclabel, "secret") == 0 ||
33 [ + + ]: 3 : strcmp(seclabel, "top secret") == 0)
34 : : {
35 [ + + ]: 3 : if (!superuser())
36 [ + - ]: 2 : ereport(ERROR,
37 : : (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
38 : : errmsg("only superuser can set '%s' label", seclabel)));
39 : 1 : return;
40 : : }
41 [ + - ]: 2 : ereport(ERROR,
42 : : (errcode(ERRCODE_INVALID_NAME),
43 : : errmsg("'%s' is not a valid security label", seclabel)));
44 : : }
45 : :
46 : : void
47 : 1 : _PG_init(void)
48 : : {
49 : 1 : register_label_provider("dummy", dummy_object_relabel);
50 : 1 : }
51 : :
52 : : /*
53 : : * This function is here just so that the extension is not completely empty
54 : : * and the dynamic library is loaded when CREATE EXTENSION runs.
55 : : */
56 : : Datum
3421 alvherre@alvh.no-ip. 57 :UBC 0 : dummy_seclabel_dummy(PG_FUNCTION_ARGS)
58 : : {
59 : 0 : PG_RETURN_VOID();
60 : : }
|