|
@@ -1279,8 +1279,12 @@ static void show_special(struct audit_context *context, int *call_panic)
|
|
break;
|
|
break;
|
|
case AUDIT_KERN_MODULE:
|
|
case AUDIT_KERN_MODULE:
|
|
audit_log_format(ab, "name=");
|
|
audit_log_format(ab, "name=");
|
|
- audit_log_untrustedstring(ab, context->module.name);
|
|
|
|
- kfree(context->module.name);
|
|
|
|
|
|
+ if (context->module.name) {
|
|
|
|
+ audit_log_untrustedstring(ab, context->module.name);
|
|
|
|
+ kfree(context->module.name);
|
|
|
|
+ } else
|
|
|
|
+ audit_log_format(ab, "(null)");
|
|
|
|
+
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
audit_log_end(ab);
|
|
audit_log_end(ab);
|
|
@@ -2411,8 +2415,9 @@ void __audit_log_kern_module(char *name)
|
|
{
|
|
{
|
|
struct audit_context *context = audit_context();
|
|
struct audit_context *context = audit_context();
|
|
|
|
|
|
- context->module.name = kmalloc(strlen(name) + 1, GFP_KERNEL);
|
|
|
|
- strcpy(context->module.name, name);
|
|
|
|
|
|
+ context->module.name = kstrdup(name, GFP_KERNEL);
|
|
|
|
+ if (!context->module.name)
|
|
|
|
+ audit_log_lost("out of memory in __audit_log_kern_module");
|
|
context->type = AUDIT_KERN_MODULE;
|
|
context->type = AUDIT_KERN_MODULE;
|
|
}
|
|
}
|
|
|
|
|