selinux: Fix an uninitialized variable BUG/panic in selinux_secattr_to_sid()
PATCH 1/1 selinux: Fix an uninitialized variable BUG/panic in selinux_secattr_to_sid()
At some point during the 2.6.27 development cycle two new fields were added to the SELinux context structure, a string pointer and a length field. The code in selinux_secattr_to_sid() was not modified and as a result these two fields were left uninitialized which could result in erratic behavior, including kernel panics, when NetLabel is used. This patch fixes the problem by fully initializing the context in selinux_secattr_to_sid() before use and reducing the level of direct context manipulation done to help prevent future problems.
Please apply this to the 2.6.27-rcX release stream.
---
security/selinux/ss/services.c | 11 ++++------- 1 files changed, 4 insertions(+), 7 deletions(-)
security/selinux/ss/services.c +4 -7
@@ -2737,6 +2737,7 @@ int security_netlbl_secattr_to_sid(struct netlbl_lsm_secattr *secattr,if (ctx ==NULL ) goto netlbl_secattr_to_sid_return; +context_init (&ctx_new); ctx_new.user = ctx->user; ctx_new.role = ctx->role; ctx_new.type = ctx->type;
@@ -2745,13 +2746,9 @@ int security_netlbl_secattr_to_sid(struct netlbl_lsm_secattr *secattr,if (ebitmap_netlbl_import (&ctx_new.range.level[0 ].cat, secattr->attr.mls.cat) !=0 ) goto netlbl_secattr_to_sid_return; - ctx_new.range.level[1 ].cat.highbit = - ctx_new.range.level[0 ].cat.highbit; - ctx_new.range.level[1 ].cat.node = - ctx_new.range.level[0 ].cat.node; - }else { -ebitmap_init (&ctx_new.range.level[0 ].cat); -ebitmap_init (&ctx_new.range.level[1 ].cat); +memcpy (&ctx_new.range.level[1 ].cat, + &ctx_new.range.level[0 ].cat, +sizeof (ctx_new.range.level[0 ].cat)); }if (mls_context_isvalid (&policydb, &ctx_new) !=1 ) goto netlbl_secattr_to_sid_return_cleanup;
--
This message was distributed to subscribers of the selinux mailing list. If you no longer wish to subscribe, send mail to [email protected] with the words "unsubscribe selinux" without quotes as the message.
Quoted 9 lines · Paul Moore
At some point during the 2.6.27 development cycle two new fields were added to the SELinux context structure, a string pointer and a length field. The code in
selinux_secattr_to_sid()was not modified and as a result these two fields were left uninitialized which could result in erratic behavior, including kernel panics, when NetLabel is used. This patch fixes the problem by fully initializing the context inselinux_secattr_to_sid()before use and reducing the level of direct context manipulation done to help prevent future problems.
Quoted 3 lines
Please apply this to the 2.6.27-rcX release stream.
Signed-off-by Paul Moore <[email protected]>
Applied to:git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6#next
Signature · 7 lines
James Morris <[email protected]> -- This message was distributed to subscribers of the selinux mailing list. If you no longer wish to subscribe, send mail to [email protected] with the words "unsubscribe selinux" without quotes as the message.