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

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
...@@ -56,9 +56,11 @@ void integrity_audit_msg(int audit_msgno, struct inode *inode, ...@@ -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);
} }
...@@ -235,10 +235,11 @@ static void dump_common_audit_data(struct audit_buffer *ab, ...@@ -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, ...@@ -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, ...@@ -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:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment