diff options
Diffstat (limited to 'security/capability.c')
| -rw-r--r-- | security/capability.c | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/security/capability.c b/security/capability.c index 88f752e8152c..fce07a7bc825 100644 --- a/security/capability.c +++ b/security/capability.c | |||
| @@ -373,6 +373,11 @@ static int cap_task_create(unsigned long clone_flags) | |||
| 373 | return 0; | 373 | return 0; |
| 374 | } | 374 | } |
| 375 | 375 | ||
| 376 | static int cap_cred_alloc_blank(struct cred *cred, gfp_t gfp) | ||
| 377 | { | ||
| 378 | return 0; | ||
| 379 | } | ||
| 380 | |||
| 376 | static void cap_cred_free(struct cred *cred) | 381 | static void cap_cred_free(struct cred *cred) |
| 377 | { | 382 | { |
| 378 | } | 383 | } |
| @@ -386,6 +391,10 @@ static void cap_cred_commit(struct cred *new, const struct cred *old) | |||
| 386 | { | 391 | { |
| 387 | } | 392 | } |
| 388 | 393 | ||
| 394 | static void cap_cred_transfer(struct cred *new, const struct cred *old) | ||
| 395 | { | ||
| 396 | } | ||
| 397 | |||
| 389 | static int cap_kernel_act_as(struct cred *new, u32 secid) | 398 | static int cap_kernel_act_as(struct cred *new, u32 secid) |
| 390 | { | 399 | { |
| 391 | return 0; | 400 | return 0; |
| @@ -396,6 +405,11 @@ static int cap_kernel_create_files_as(struct cred *new, struct inode *inode) | |||
| 396 | return 0; | 405 | return 0; |
| 397 | } | 406 | } |
| 398 | 407 | ||
| 408 | static int cap_kernel_module_request(void) | ||
| 409 | { | ||
| 410 | return 0; | ||
| 411 | } | ||
| 412 | |||
| 399 | static int cap_task_setuid(uid_t id0, uid_t id1, uid_t id2, int flags) | 413 | static int cap_task_setuid(uid_t id0, uid_t id1, uid_t id2, int flags) |
| 400 | { | 414 | { |
| 401 | return 0; | 415 | return 0; |
| @@ -701,10 +715,26 @@ static void cap_inet_conn_established(struct sock *sk, struct sk_buff *skb) | |||
| 701 | { | 715 | { |
| 702 | } | 716 | } |
| 703 | 717 | ||
| 718 | |||
| 719 | |||
| 704 | static void cap_req_classify_flow(const struct request_sock *req, | 720 | static void cap_req_classify_flow(const struct request_sock *req, |
| 705 | struct flowi *fl) | 721 | struct flowi *fl) |
| 706 | { | 722 | { |
| 707 | } | 723 | } |
| 724 | |||
| 725 | static int cap_tun_dev_create(void) | ||
| 726 | { | ||
| 727 | return 0; | ||
| 728 | } | ||
| 729 | |||
| 730 | static void cap_tun_dev_post_create(struct sock *sk) | ||
| 731 | { | ||
| 732 | } | ||
| 733 | |||
| 734 | static int cap_tun_dev_attach(struct sock *sk) | ||
| 735 | { | ||
| 736 | return 0; | ||
| 737 | } | ||
| 708 | #endif /* CONFIG_SECURITY_NETWORK */ | 738 | #endif /* CONFIG_SECURITY_NETWORK */ |
| 709 | 739 | ||
| 710 | #ifdef CONFIG_SECURITY_NETWORK_XFRM | 740 | #ifdef CONFIG_SECURITY_NETWORK_XFRM |
| @@ -792,6 +822,20 @@ static void cap_release_secctx(char *secdata, u32 seclen) | |||
| 792 | { | 822 | { |
| 793 | } | 823 | } |
| 794 | 824 | ||
| 825 | static int cap_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen) | ||
| 826 | { | ||
| 827 | return 0; | ||
| 828 | } | ||
| 829 | |||
| 830 | static int cap_inode_setsecctx(struct dentry *dentry, void *ctx, u32 ctxlen) | ||
| 831 | { | ||
| 832 | return 0; | ||
| 833 | } | ||
| 834 | |||
| 835 | static int cap_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen) | ||
| 836 | { | ||
| 837 | return 0; | ||
| 838 | } | ||
| 795 | #ifdef CONFIG_KEYS | 839 | #ifdef CONFIG_KEYS |
| 796 | static int cap_key_alloc(struct key *key, const struct cred *cred, | 840 | static int cap_key_alloc(struct key *key, const struct cred *cred, |
| 797 | unsigned long flags) | 841 | unsigned long flags) |
| @@ -815,6 +859,13 @@ static int cap_key_getsecurity(struct key *key, char **_buffer) | |||
| 815 | return 0; | 859 | return 0; |
| 816 | } | 860 | } |
| 817 | 861 | ||
| 862 | static int cap_key_session_to_parent(const struct cred *cred, | ||
| 863 | const struct cred *parent_cred, | ||
| 864 | struct key *key) | ||
| 865 | { | ||
| 866 | return 0; | ||
| 867 | } | ||
| 868 | |||
| 818 | #endif /* CONFIG_KEYS */ | 869 | #endif /* CONFIG_KEYS */ |
| 819 | 870 | ||
| 820 | #ifdef CONFIG_AUDIT | 871 | #ifdef CONFIG_AUDIT |
| @@ -854,7 +905,7 @@ struct security_operations default_security_ops = { | |||
| 854 | 905 | ||
| 855 | void security_fixup_ops(struct security_operations *ops) | 906 | void security_fixup_ops(struct security_operations *ops) |
| 856 | { | 907 | { |
| 857 | set_to_cap_if_null(ops, ptrace_may_access); | 908 | set_to_cap_if_null(ops, ptrace_access_check); |
| 858 | set_to_cap_if_null(ops, ptrace_traceme); | 909 | set_to_cap_if_null(ops, ptrace_traceme); |
| 859 | set_to_cap_if_null(ops, capget); | 910 | set_to_cap_if_null(ops, capget); |
| 860 | set_to_cap_if_null(ops, capset); | 911 | set_to_cap_if_null(ops, capset); |
| @@ -940,11 +991,14 @@ void security_fixup_ops(struct security_operations *ops) | |||
| 940 | set_to_cap_if_null(ops, file_receive); | 991 | set_to_cap_if_null(ops, file_receive); |
| 941 | set_to_cap_if_null(ops, dentry_open); | 992 | set_to_cap_if_null(ops, dentry_open); |
| 942 | set_to_cap_if_null(ops, task_create); | 993 | set_to_cap_if_null(ops, task_create); |
| 994 | set_to_cap_if_null(ops, cred_alloc_blank); | ||
| 943 | set_to_cap_if_null(ops, cred_free); | 995 | set_to_cap_if_null(ops, cred_free); |
| 944 | set_to_cap_if_null(ops, cred_prepare); | 996 | set_to_cap_if_null(ops, cred_prepare); |
| 945 | set_to_cap_if_null(ops, cred_commit); | 997 | set_to_cap_if_null(ops, cred_commit); |
| 998 | set_to_cap_if_null(ops, cred_transfer); | ||
| 946 | set_to_cap_if_null(ops, kernel_act_as); | 999 | set_to_cap_if_null(ops, kernel_act_as); |
| 947 | set_to_cap_if_null(ops, kernel_create_files_as); | 1000 | set_to_cap_if_null(ops, kernel_create_files_as); |
| 1001 | set_to_cap_if_null(ops, kernel_module_request); | ||
| 948 | set_to_cap_if_null(ops, task_setuid); | 1002 | set_to_cap_if_null(ops, task_setuid); |
| 949 | set_to_cap_if_null(ops, task_fix_setuid); | 1003 | set_to_cap_if_null(ops, task_fix_setuid); |
| 950 | set_to_cap_if_null(ops, task_setgid); | 1004 | set_to_cap_if_null(ops, task_setgid); |
| @@ -992,6 +1046,9 @@ void security_fixup_ops(struct security_operations *ops) | |||
| 992 | set_to_cap_if_null(ops, secid_to_secctx); | 1046 | set_to_cap_if_null(ops, secid_to_secctx); |
| 993 | set_to_cap_if_null(ops, secctx_to_secid); | 1047 | set_to_cap_if_null(ops, secctx_to_secid); |
| 994 | set_to_cap_if_null(ops, release_secctx); | 1048 | set_to_cap_if_null(ops, release_secctx); |
| 1049 | set_to_cap_if_null(ops, inode_notifysecctx); | ||
| 1050 | set_to_cap_if_null(ops, inode_setsecctx); | ||
| 1051 | set_to_cap_if_null(ops, inode_getsecctx); | ||
| 995 | #ifdef CONFIG_SECURITY_NETWORK | 1052 | #ifdef CONFIG_SECURITY_NETWORK |
| 996 | set_to_cap_if_null(ops, unix_stream_connect); | 1053 | set_to_cap_if_null(ops, unix_stream_connect); |
| 997 | set_to_cap_if_null(ops, unix_may_send); | 1054 | set_to_cap_if_null(ops, unix_may_send); |
| @@ -1020,6 +1077,9 @@ void security_fixup_ops(struct security_operations *ops) | |||
| 1020 | set_to_cap_if_null(ops, inet_csk_clone); | 1077 | set_to_cap_if_null(ops, inet_csk_clone); |
| 1021 | set_to_cap_if_null(ops, inet_conn_established); | 1078 | set_to_cap_if_null(ops, inet_conn_established); |
| 1022 | set_to_cap_if_null(ops, req_classify_flow); | 1079 | set_to_cap_if_null(ops, req_classify_flow); |
| 1080 | set_to_cap_if_null(ops, tun_dev_create); | ||
| 1081 | set_to_cap_if_null(ops, tun_dev_post_create); | ||
| 1082 | set_to_cap_if_null(ops, tun_dev_attach); | ||
| 1023 | #endif /* CONFIG_SECURITY_NETWORK */ | 1083 | #endif /* CONFIG_SECURITY_NETWORK */ |
| 1024 | #ifdef CONFIG_SECURITY_NETWORK_XFRM | 1084 | #ifdef CONFIG_SECURITY_NETWORK_XFRM |
| 1025 | set_to_cap_if_null(ops, xfrm_policy_alloc_security); | 1085 | set_to_cap_if_null(ops, xfrm_policy_alloc_security); |
| @@ -1038,6 +1098,7 @@ void security_fixup_ops(struct security_operations *ops) | |||
| 1038 | set_to_cap_if_null(ops, key_free); | 1098 | set_to_cap_if_null(ops, key_free); |
| 1039 | set_to_cap_if_null(ops, key_permission); | 1099 | set_to_cap_if_null(ops, key_permission); |
| 1040 | set_to_cap_if_null(ops, key_getsecurity); | 1100 | set_to_cap_if_null(ops, key_getsecurity); |
| 1101 | set_to_cap_if_null(ops, key_session_to_parent); | ||
| 1041 | #endif /* CONFIG_KEYS */ | 1102 | #endif /* CONFIG_KEYS */ |
| 1042 | #ifdef CONFIG_AUDIT | 1103 | #ifdef CONFIG_AUDIT |
| 1043 | set_to_cap_if_null(ops, audit_rule_init); | 1104 | set_to_cap_if_null(ops, audit_rule_init); |
