This file is indexed.

/usr/include/rsbac/pm_types.h is in librsbac-dev 1.4.0-repack-0ubuntu6.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
/************************************ */
/* Rule Set Based Access Control      */
/* Author and (c) 1999-2001:          */
/*   Amon Ott <ao@rsbac.org>          */
/* API: Data types for privacy        */
/*      model calls                   */
/* Last modified: 06/Sep/2001         */
/************************************ */

#ifndef __RSBAC_PM_TYPES_H
#define __RSBAC_PM_TYPES_H

#include <linux/types.h>

/* Basic types */

typedef __u32 rsbac_pm_task_id_t;
typedef __u32 rsbac_pm_task_set_id_t;
typedef __u32 rsbac_pm_tp_id_t;       /* transformation procedure id */
typedef __u32 rsbac_pm_tp_set_id_t;   /* transformation procedure set id */
typedef __u32 rsbac_pm_ru_set_id_t;   /* responsible user set id */
typedef __u32 rsbac_pm_purpose_id_t;
typedef __s32 rsbac_pm_pp_set_id_t;   /* purpose set id */
typedef rsbac_pid_t rsbac_pm_in_pp_set_id_t; /* input purpose set id */
typedef rsbac_pm_in_pp_set_id_t rsbac_pm_out_pp_set_id_t;
                                            /* output purpose set id */
typedef __u32 rsbac_pm_object_class_id_t;
typedef __u32 rsbac_pm_tkt_id_t;      /* ticket id */
typedef rsbac_time_t rsbac_pm_time_stamp_t; /* for ticket time stamps, same as */
                                      /* parameter for sys_time */
typedef __u8 rsbac_pm_accesses_t;   /* for necessary accesses */
#define RSBAC_PM_A_READ   1
#define RSBAC_PM_A_WRITE  2
#define RSBAC_PM_A_DELETE 4
#define RSBAC_PM_A_CREATE 8
#define RSBAC_PM_A_APPEND 16
#define RSBAC_PM_A_ALL    31
#define RSBAC_PM_A_WRITING (RSBAC_PM_A_WRITE | RSBAC_PM_A_DELETE \
                            | RSBAC_PM_A_CREATE | RSBAC_PM_A_APPEND)
#define RSBAC_PM_A_WRITE_TO_FILE (RSBAC_PM_A_WRITE | RSBAC_PM_A_APPEND)

#define RSBAC_PM_ROOT_TASK_SET_ID     (rsbac_pm_task_set_id_t) -1
#define RSBAC_PM_IPC_OBJECT_CLASS_ID  (rsbac_pm_object_class_id_t) 60000
#define RSBAC_PM_DEV_OBJECT_CLASS_ID  (rsbac_pm_object_class_id_t) 60001

/* enum attributes */

enum    rsbac_pm_list_t {PL_task,PL_class,PL_na,PL_cs,PL_tp,PL_pp,PL_tkt,PL_none};

enum    rsbac_pm_all_list_t {PA_task,PA_class,PA_na,PA_cs,PA_tp,PA_pp,PA_tkt,
                             PA_task_set,PA_tp_set,PA_ru_set,PA_pp_set,
                             PA_in_pp_set,PA_out_pp_set,PA_none};

enum    rsbac_pm_role_t {PR_user, PR_security_officer,
                         PR_data_protection_officer,
                         PR_tp_manager, PR_system_admin,
                         PR_none};
typedef rsbac_enum_t rsbac_pm_role_int_t;

enum    rsbac_pm_process_type_t {PP_none, PP_TP};
typedef rsbac_enum_t rsbac_pm_process_type_int_t;

enum    rsbac_pm_object_type_t {PO_none, PO_TP, PO_personal_data,
                                PO_non_personal_data, PO_ipc, PO_dir};
typedef rsbac_enum_t rsbac_pm_object_type_int_t;

typedef rsbac_pm_process_type_int_t rsbac_pm_program_type_int_t;

#ifdef __KERNEL__
enum    rsbac_pm_set_t  {PS_TASK,PS_TP,PS_RU,PS_PP,PS_IN_PP,PS_OUT_PP,PS_NONE};

/* unions */

union rsbac_pm_set_id_t
  {
    rsbac_pm_task_set_id_t   task_set;
    rsbac_pm_tp_set_id_t     tp_set;
    rsbac_pm_ru_set_id_t     ru_set;
    rsbac_pm_pp_set_id_t     pp_set;
    rsbac_pm_in_pp_set_id_t  in_pp_set;
    rsbac_pm_out_pp_set_id_t out_pp_set;
  };

union rsbac_pm_set_member_t
  {
    rsbac_pm_task_id_t      task;
    rsbac_pm_tp_id_t        tp;
    rsbac_uid_t             ru;
    rsbac_pm_purpose_id_t   pp;
  };

struct  rsbac_pm_na_id_t
  {
      rsbac_pm_task_id_t                 task;
      rsbac_pm_object_class_id_t         object_class;
      rsbac_pm_tp_id_t                   tp;
  };

struct  rsbac_pm_cs_id_t
  {
      rsbac_pm_purpose_id_t              purpose;
      struct rsbac_fs_file_t             file;
  };

/*****************/
/* api types     */
/*****************/

struct rsbac_pm_task_data_t
    {
      rsbac_pm_task_id_t                 id;
      rsbac_pm_purpose_id_t              purpose;
      rsbac_pm_tp_set_id_t               tp_set;
      rsbac_pm_ru_set_id_t               ru_set;
    };

struct rsbac_pm_class_data_t
    {
      rsbac_pm_object_class_id_t            id;
      rsbac_pm_pp_set_id_t                  pp_set;
    };

struct rsbac_pm_na_data_t
    {
      rsbac_pm_task_id_t                 task;
      rsbac_pm_object_class_id_t         object_class;
      rsbac_pm_tp_id_t                   tp;
      rsbac_pm_accesses_t                accesses;
    };

struct rsbac_pm_cs_data_t
    {
      rsbac_pm_purpose_id_t              purpose;
      struct rsbac_fs_file_t             file;
    };

struct rsbac_pm_tp_data_t
    {
      rsbac_pm_tp_id_t                   id;
    };

struct rsbac_pm_pp_data_t
    {
      rsbac_pm_purpose_id_t              id;
      rsbac_pm_object_class_id_t         def_class;
    };
#endif /* __KERNEL__ */

struct rsbac_pm_purpose_list_item_t
    {
      rsbac_pm_purpose_id_t                 id;
      struct rsbac_pm_purpose_list_item_t * next;
    };

/******* ticket ********/

#include <rsbac/pm_ticket.h>

#ifdef __KERNEL__
/****************************************************************************/
/* For all pm lists all manipulation is encapsulated by the function calls  */
/* rsbac_pm_set_data, rsbac_pm_get_data and rsbac_pm_remove_target.   */

/* For those, we declare some extra types to specify target and attribute.  */

enum   rsbac_pm_target_t {PMT_TASK,
                          PMT_CLASS,
                          PMT_NA,
                          PMT_CS,
                          PMT_TP,
                          PMT_PP,
                          PMT_TKT,
                          PMT_NONE};
typedef rsbac_enum_t rsbac_pm_target_int_t;

union  rsbac_pm_target_id_t
       {
          rsbac_pm_task_id_t          task;
          rsbac_pm_object_class_id_t  object_class;
          struct rsbac_pm_na_id_t     na;
          struct rsbac_pm_cs_id_t     cs;
          rsbac_pm_tp_id_t            tp;
          rsbac_pm_purpose_id_t       pp;
          rsbac_pm_tkt_id_t           tkt;
          int                         dummy;
       };

enum   rsbac_pm_data_t
       {                  PD_purpose,
                          PD_tp_set,
                          PD_ru_set,
                          PD_pp_set,
                          PD_task,
                          PD_class,
                          PD_tp,
                          PD_accesses,
                          PD_file,
                          PD_issuer,
                          PD_function_type,
                          PD_function_param,
                          PD_valid_until,
                          PD_def_class,
                          PD_none
       };
typedef rsbac_enum_t rsbac_pm_data_int_t;

union  rsbac_pm_data_value_t
       {
          rsbac_pm_purpose_id_t         purpose;
          rsbac_pm_tp_set_id_t          tp_set;
          rsbac_pm_ru_set_id_t          ru_set;
          rsbac_pm_pp_set_id_t          pp_set;
          rsbac_pm_task_id_t            task;
          rsbac_pm_object_class_id_t    object_class;
          rsbac_pm_tp_id_t              tp;
          rsbac_pm_accesses_t           accesses;
          struct rsbac_fs_file_t        file;
          rsbac_uid_t                   issuer;
          enum   rsbac_pm_tkt_function_type_t   function_type;
          union  rsbac_pm_tkt_internal_function_param_t  function_param;
          rsbac_pm_time_stamp_t         valid_until;
          rsbac_pm_object_class_id_t    def_class;
          int                           dummy;
       };


union  rsbac_pm_all_data_value_t
       {
          struct rsbac_pm_task_data_t   task;
          struct rsbac_pm_class_data_t  object_class;
          struct rsbac_pm_na_data_t     na;
          struct rsbac_pm_cs_data_t     cs;
          struct rsbac_pm_tp_data_t     tp;
          struct rsbac_pm_pp_data_t     pp;
          struct rsbac_pm_tkt_data_t    tkt;
          int                           dummy;
       };
#endif

#endif