Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41fdc305 authored by Kees Cook's avatar Kees Cook Committed by Al Viro
Browse files

audit: treat s_id as an untrusted string



The use of s_id should go through the untrusted string path, just to be
extra careful.

Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Acked-by: default avatarMimi Zohar <zohar@us.ibm.com>
Signed-off-by: default avatarEric Paris <eparis@redhat.com>
parent 5afb8a3f
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
@@ -56,9 +56,11 @@ void integrity_audit_msg(int audit_msgno, struct inode *inode,
		audit_log_format(ab, " name=");
		audit_log_format(ab, " name=");
		audit_log_untrustedstring(ab, fname);
		audit_log_untrustedstring(ab, fname);
	}
	}
	if (inode)
	if (inode) {
		audit_log_format(ab, " dev=%s ino=%lu",
		audit_log_format(ab, " dev=");
				 inode->i_sb->s_id, inode->i_ino);
		audit_log_untrustedstring(ab, inode->i_sb->s_id);
		audit_log_format(ab, " ino=%lu", inode->i_ino);
	}
	audit_log_format(ab, " res=%d", !result ? 0 : 1);
	audit_log_format(ab, " res=%d", !result ? 0 : 1);
	audit_log_end(ab);
	audit_log_end(ab);
}
}
+13 −10
Original line number Original line Diff line number Diff line
@@ -235,10 +235,11 @@ static void dump_common_audit_data(struct audit_buffer *ab,
		audit_log_d_path(ab, "path=", &a->u.path);
		audit_log_d_path(ab, "path=", &a->u.path);


		inode = a->u.path.dentry->d_inode;
		inode = a->u.path.dentry->d_inode;
		if (inode)
		if (inode) {
			audit_log_format(ab, " dev=%s ino=%lu",
			audit_log_format(ab, " dev=");
					inode->i_sb->s_id,
			audit_log_untrustedstring(ab, inode->i_sb->s_id);
					inode->i_ino);
			audit_log_format(ab, " ino=%lu", inode->i_ino);
		}
		break;
		break;
	}
	}
	case LSM_AUDIT_DATA_DENTRY: {
	case LSM_AUDIT_DATA_DENTRY: {
@@ -248,10 +249,11 @@ static void dump_common_audit_data(struct audit_buffer *ab,
		audit_log_untrustedstring(ab, a->u.dentry->d_name.name);
		audit_log_untrustedstring(ab, a->u.dentry->d_name.name);


		inode = a->u.dentry->d_inode;
		inode = a->u.dentry->d_inode;
		if (inode)
		if (inode) {
			audit_log_format(ab, " dev=%s ino=%lu",
			audit_log_format(ab, " dev=");
					inode->i_sb->s_id,
			audit_log_untrustedstring(ab, inode->i_sb->s_id);
					inode->i_ino);
			audit_log_format(ab, " ino=%lu", inode->i_ino);
		}
		break;
		break;
	}
	}
	case LSM_AUDIT_DATA_INODE: {
	case LSM_AUDIT_DATA_INODE: {
@@ -266,8 +268,9 @@ static void dump_common_audit_data(struct audit_buffer *ab,
					 dentry->d_name.name);
					 dentry->d_name.name);
			dput(dentry);
			dput(dentry);
		}
		}
		audit_log_format(ab, " dev=%s ino=%lu", inode->i_sb->s_id,
		audit_log_format(ab, " dev=");
				 inode->i_ino);
		audit_log_untrustedstring(ab, inode->i_sb->s_id);
		audit_log_format(ab, " ino=%lu", inode->i_ino);
		break;
		break;
	}
	}
	case LSM_AUDIT_DATA_TASK:
	case LSM_AUDIT_DATA_TASK: