|
@@ -2785,7 +2785,7 @@ netlbl_secattr_to_sid_return_cleanup:
|
|
*/
|
|
*/
|
|
int security_netlbl_sid_to_secattr(u32 sid, struct netlbl_lsm_secattr *secattr)
|
|
int security_netlbl_sid_to_secattr(u32 sid, struct netlbl_lsm_secattr *secattr)
|
|
{
|
|
{
|
|
- int rc = -ENOENT;
|
|
|
|
|
|
+ int rc;
|
|
struct context *ctx;
|
|
struct context *ctx;
|
|
|
|
|
|
if (!ss_initialized)
|
|
if (!ss_initialized)
|
|
@@ -2793,10 +2793,16 @@ int security_netlbl_sid_to_secattr(u32 sid, struct netlbl_lsm_secattr *secattr)
|
|
|
|
|
|
read_lock(&policy_rwlock);
|
|
read_lock(&policy_rwlock);
|
|
ctx = sidtab_search(&sidtab, sid);
|
|
ctx = sidtab_search(&sidtab, sid);
|
|
- if (ctx == NULL)
|
|
|
|
|
|
+ if (ctx == NULL) {
|
|
|
|
+ rc = -ENOENT;
|
|
goto netlbl_sid_to_secattr_failure;
|
|
goto netlbl_sid_to_secattr_failure;
|
|
|
|
+ }
|
|
secattr->domain = kstrdup(policydb.p_type_val_to_name[ctx->type - 1],
|
|
secattr->domain = kstrdup(policydb.p_type_val_to_name[ctx->type - 1],
|
|
GFP_ATOMIC);
|
|
GFP_ATOMIC);
|
|
|
|
+ if (secattr->domain == NULL) {
|
|
|
|
+ rc = -ENOMEM;
|
|
|
|
+ goto netlbl_sid_to_secattr_failure;
|
|
|
|
+ }
|
|
secattr->flags |= NETLBL_SECATTR_DOMAIN_CPY;
|
|
secattr->flags |= NETLBL_SECATTR_DOMAIN_CPY;
|
|
mls_export_netlbl_lvl(ctx, secattr);
|
|
mls_export_netlbl_lvl(ctx, secattr);
|
|
rc = mls_export_netlbl_cat(ctx, secattr);
|
|
rc = mls_export_netlbl_cat(ctx, secattr);
|