ima: Use correct type for the args_p member of ima_rule_entry.lsm elements
authorTyler Hicks <tyhicks@linux.microsoft.com>
Thu, 9 Jul 2020 06:19:08 +0000 (01:19 -0500)
committerMimi Zohar <zohar@linux.ibm.com>
Mon, 20 Jul 2020 17:28:14 +0000 (13:28 -0400)
Make args_p be of the char pointer type rather than have it be a void
pointer that gets casted to char pointer when it is used. It is a simple
NUL-terminated string as returned by match_strdup().

Signed-off-by: Tyler Hicks <tyhicks@linux.microsoft.com>
Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
security/integrity/ima/ima_policy.c

index 86ccd00..37438bf 100644 (file)
@@ -74,7 +74,7 @@ struct ima_rule_entry {
        int pcr;
        struct {
                void *rule;     /* LSM file metadata specific */
-               void *args_p;   /* audit value */
+               char *args_p;   /* audit value */
                int type;       /* audit type */
        } lsm[MAX_LSM_RULES];
        char *fsname;
@@ -314,7 +314,7 @@ static struct ima_rule_entry *ima_lsm_copy_rule(struct ima_rule_entry *entry)
                                          &nentry->lsm[i].rule);
                if (!nentry->lsm[i].rule)
                        pr_warn("rule for LSM \'%s\' is undefined\n",
-                               (char *)nentry->lsm[i].args_p);
+                               nentry->lsm[i].args_p);
        }
        return nentry;
 }
@@ -918,7 +918,7 @@ static int ima_lsm_rule_init(struct ima_rule_entry *entry,
                                           &entry->lsm[lsm_rule].rule);
        if (!entry->lsm[lsm_rule].rule) {
                pr_warn("rule for LSM \'%s\' is undefined\n",
-                       (char *)entry->lsm[lsm_rule].args_p);
+                       entry->lsm[lsm_rule].args_p);
 
                if (ima_rules == &ima_default_rules) {
                        kfree(entry->lsm[lsm_rule].args_p);
@@ -1684,27 +1684,27 @@ int ima_policy_show(struct seq_file *m, void *v)
                        switch (i) {
                        case LSM_OBJ_USER:
                                seq_printf(m, pt(Opt_obj_user),
-                                          (char *)entry->lsm[i].args_p);
+                                          entry->lsm[i].args_p);
                                break;
                        case LSM_OBJ_ROLE:
                                seq_printf(m, pt(Opt_obj_role),
-                                          (char *)entry->lsm[i].args_p);
+                                          entry->lsm[i].args_p);
                                break;
                        case LSM_OBJ_TYPE:
                                seq_printf(m, pt(Opt_obj_type),
-                                          (char *)entry->lsm[i].args_p);
+                                          entry->lsm[i].args_p);
                                break;
                        case LSM_SUBJ_USER:
                                seq_printf(m, pt(Opt_subj_user),
-                                          (char *)entry->lsm[i].args_p);
+                                          entry->lsm[i].args_p);
                                break;
                        case LSM_SUBJ_ROLE:
                                seq_printf(m, pt(Opt_subj_role),
-                                          (char *)entry->lsm[i].args_p);
+                                          entry->lsm[i].args_p);
                                break;
                        case LSM_SUBJ_TYPE:
                                seq_printf(m, pt(Opt_subj_type),
-                                          (char *)entry->lsm[i].args_p);
+                                          entry->lsm[i].args_p);
                                break;
                        }
                        seq_puts(m, " ");