services.c (3de4bab5b9f8848a0c16a4b1ffe0452f0d670237) | services.c (02752760359db6b00a3ffb1acfc13ef8d9eb1e3f) |
---|---|
1/* 2 * Implementation of the security services. 3 * 4 * Authors : Stephen Smalley, <sds@epoch.ncsc.mil> 5 * James Morris <jmorris@redhat.com> 6 * 7 * Updated: Trusted Computer Solutions, Inc. <dgoeddel@trustedcs.com> 8 * --- 41 unchanged lines hidden (view full) --- 50#include "policydb.h" 51#include "sidtab.h" 52#include "services.h" 53#include "conditional.h" 54#include "mls.h" 55#include "objsec.h" 56#include "selinux_netlabel.h" 57#include "xfrm.h" | 1/* 2 * Implementation of the security services. 3 * 4 * Authors : Stephen Smalley, <sds@epoch.ncsc.mil> 5 * James Morris <jmorris@redhat.com> 6 * 7 * Updated: Trusted Computer Solutions, Inc. <dgoeddel@trustedcs.com> 8 * --- 41 unchanged lines hidden (view full) --- 50#include "policydb.h" 51#include "sidtab.h" 52#include "services.h" 53#include "conditional.h" 54#include "mls.h" 55#include "objsec.h" 56#include "selinux_netlabel.h" 57#include "xfrm.h" |
58#include "ebitmap.h" |
|
58 59extern void selnl_notify_policyload(u32 seqno); 60unsigned int policydb_loaded_version; 61 62/* 63 * This is declared in avc.c 64 */ 65extern const struct selinux_class_perm selinux_class_perm; --- 2313 unchanged lines hidden (view full) --- 2379 } else if (secattr->flags & NETLBL_SECATTR_MLS_LVL) { 2380 ctx = sidtab_search(&sidtab, base_sid); 2381 if (ctx == NULL) 2382 goto netlbl_secattr_to_sid_return; 2383 2384 ctx_new.user = ctx->user; 2385 ctx_new.role = ctx->role; 2386 ctx_new.type = ctx->type; | 59 60extern void selnl_notify_policyload(u32 seqno); 61unsigned int policydb_loaded_version; 62 63/* 64 * This is declared in avc.c 65 */ 66extern const struct selinux_class_perm selinux_class_perm; --- 2313 unchanged lines hidden (view full) --- 2380 } else if (secattr->flags & NETLBL_SECATTR_MLS_LVL) { 2381 ctx = sidtab_search(&sidtab, base_sid); 2382 if (ctx == NULL) 2383 goto netlbl_secattr_to_sid_return; 2384 2385 ctx_new.user = ctx->user; 2386 ctx_new.role = ctx->role; 2387 ctx_new.type = ctx->type; |
2387 mls_import_lvl(&ctx_new, secattr->mls_lvl, secattr->mls_lvl); | 2388 mls_import_netlbl_lvl(&ctx_new, secattr); |
2388 if (secattr->flags & NETLBL_SECATTR_MLS_CAT) { | 2389 if (secattr->flags & NETLBL_SECATTR_MLS_CAT) { |
2389 if (mls_import_cat(&ctx_new, 2390 secattr->mls_cat, 2391 secattr->mls_cat_len, 2392 NULL, 2393 0) != 0) | 2390 if (ebitmap_netlbl_import(&ctx_new.range.level[0].cat, 2391 secattr->mls_cat) != 0) |
2394 goto netlbl_secattr_to_sid_return; 2395 ctx_new.range.level[1].cat.highbit = 2396 ctx_new.range.level[0].cat.highbit; 2397 ctx_new.range.level[1].cat.node = 2398 ctx_new.range.level[0].cat.node; 2399 } else { 2400 ebitmap_init(&ctx_new.range.level[0].cat); 2401 ebitmap_init(&ctx_new.range.level[1].cat); --- 79 unchanged lines hidden (view full) --- 2481 POLICY_RDLOCK; 2482 2483 ctx = sidtab_search(&sidtab, sid); 2484 if (ctx == NULL) 2485 goto netlbl_socket_setsid_return; 2486 2487 secattr.domain = kstrdup(policydb.p_type_val_to_name[ctx->type - 1], 2488 GFP_ATOMIC); | 2392 goto netlbl_secattr_to_sid_return; 2393 ctx_new.range.level[1].cat.highbit = 2394 ctx_new.range.level[0].cat.highbit; 2395 ctx_new.range.level[1].cat.node = 2396 ctx_new.range.level[0].cat.node; 2397 } else { 2398 ebitmap_init(&ctx_new.range.level[0].cat); 2399 ebitmap_init(&ctx_new.range.level[1].cat); --- 79 unchanged lines hidden (view full) --- 2479 POLICY_RDLOCK; 2480 2481 ctx = sidtab_search(&sidtab, sid); 2482 if (ctx == NULL) 2483 goto netlbl_socket_setsid_return; 2484 2485 secattr.domain = kstrdup(policydb.p_type_val_to_name[ctx->type - 1], 2486 GFP_ATOMIC); |
2489 mls_export_lvl(ctx, &secattr.mls_lvl, NULL); 2490 rc = mls_export_cat(ctx, 2491 &secattr.mls_cat, 2492 &secattr.mls_cat_len, 2493 NULL, 2494 NULL); | 2487 secattr.flags |= NETLBL_SECATTR_DOMAIN; 2488 mls_export_netlbl_lvl(ctx, &secattr); 2489 rc = mls_export_netlbl_cat(ctx, &secattr); |
2495 if (rc != 0) 2496 goto netlbl_socket_setsid_return; 2497 | 2490 if (rc != 0) 2491 goto netlbl_socket_setsid_return; 2492 |
2498 secattr.flags |= NETLBL_SECATTR_DOMAIN | NETLBL_SECATTR_MLS_LVL; 2499 if (secattr.mls_cat) 2500 secattr.flags |= NETLBL_SECATTR_MLS_CAT; 2501 | |
2502 rc = netlbl_socket_setattr(sock, &secattr); 2503 if (rc == 0) { 2504 spin_lock(&sksec->nlbl_lock); 2505 sksec->nlbl_state = NLBL_LABELED; 2506 spin_unlock(&sksec->nlbl_lock); 2507 } 2508 2509netlbl_socket_setsid_return: --- 257 unchanged lines hidden --- | 2493 rc = netlbl_socket_setattr(sock, &secattr); 2494 if (rc == 0) { 2495 spin_lock(&sksec->nlbl_lock); 2496 sksec->nlbl_state = NLBL_LABELED; 2497 spin_unlock(&sksec->nlbl_lock); 2498 } 2499 2500netlbl_socket_setsid_return: --- 257 unchanged lines hidden --- |