NetLabel: better error handling involving mls_export_cat()
Upon inspection it looked like the error handling for mls_export_cat() was rather poor. This patch addresses this by NULL'ing out kfree()'d pointers before returning and checking the return value of the function everywhere it is called. Signed-off-by: Paul Moore <paul.moore@hp.com> Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
committed by
David S. Miller
parent
044a68ed8a
commit
bf0edf3929
@@ -640,8 +640,13 @@ int mls_export_cat(const struct context *context,
|
||||
{
|
||||
int rc = -EPERM;
|
||||
|
||||
if (!selinux_mls_enabled)
|
||||
if (!selinux_mls_enabled) {
|
||||
*low = NULL;
|
||||
*low_len = 0;
|
||||
*high = NULL;
|
||||
*high_len = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (low != NULL) {
|
||||
rc = ebitmap_export(&context->range.level[0].cat,
|
||||
@@ -661,10 +666,16 @@ int mls_export_cat(const struct context *context,
|
||||
return 0;
|
||||
|
||||
export_cat_failure:
|
||||
if (low != NULL)
|
||||
if (low != NULL) {
|
||||
kfree(*low);
|
||||
if (high != NULL)
|
||||
*low = NULL;
|
||||
*low_len = 0;
|
||||
}
|
||||
if (high != NULL) {
|
||||
kfree(*high);
|
||||
*high = NULL;
|
||||
*high_len = 0;
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user