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:
Paul Moore
2006-10-11 19:10:48 -04:00
committed by David S. Miller
parent 044a68ed8a
commit bf0edf3929
3 changed files with 30 additions and 13 deletions

View File

@@ -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;
}