History

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.

Kees Cook committed 14 years ago

Commit 41fdc301 parent 5afb8a32 files · +18 −13Browse files

Unified · Split

2 files
  1. security/integrity/ima/ima_audit.c +5 −3
  2. security/lsm_audit.c +13 −10
security/integrity/ima/ima_audit.c+5−3
@@ -56,9 +56,11 @@ void integrity_audit_msg(int audit_msgno, struct inode *inode, · 55 unmodified lines
5656 audit_log_format(ab, " name=");
5757 audit_log_untrustedstring(ab, fname);
5858 }
59− if (inode)
60− audit_log_format(ab, " dev=%s ino=%lu",
61− inode->i_sb->s_id, inode->i_ino);
59+ if (inode) {
60+ audit_log_format(ab, " dev=");
61+ audit_log_untrustedstring(ab, inode->i_sb->s_id);
62+ audit_log_format(ab, " ino=%lu", inode->i_ino);
63+ }
6264 audit_log_format(ab, " res=%d", !result ? 0 : 1);
6365 audit_log_end(ab);
6466 }
security/lsm_audit.c+13−10
@@ -235,10 +235,11 @@ static void dump_common_audit_data(struct audit_buffer *ab, · 234 unmodified lines
235235 audit_log_d_path(ab, "path=", &a->u.path);
236236
237237 inode = a->u.path.dentry->d_inode;
238− if (inode)
239− audit_log_format(ab, " dev=%s ino=%lu",
240− inode->i_sb->s_id,
241− inode->i_ino);
238+ if (inode) {
239+ audit_log_format(ab, " dev=");
240+ audit_log_untrustedstring(ab, inode->i_sb->s_id);
241+ audit_log_format(ab, " ino=%lu", inode->i_ino);
242+ }
242243 break;
243244 }
244245 case LSM_AUDIT_DATA_DENTRY: {
@@ -248,10 +249,11 @@ static void dump_common_audit_data(struct audit_buffer *ab, · 3 unmodified lines
248249 audit_log_untrustedstring(ab, a->u.dentry->d_name.name);
249250
250251 inode = a->u.dentry->d_inode;
251− if (inode)
252− audit_log_format(ab, " dev=%s ino=%lu",
253− inode->i_sb->s_id,
254− inode->i_ino);
252+ if (inode) {
253+ audit_log_format(ab, " dev=");
254+ audit_log_untrustedstring(ab, inode->i_sb->s_id);
255+ audit_log_format(ab, " ino=%lu", inode->i_ino);
256+ }
255257 break;
256258 }
257259 case LSM_AUDIT_DATA_INODE: {
@@ -266,8 +268,9 @@ static void dump_common_audit_data(struct audit_buffer *ab, · 8 unmodified lines
266268 dentry->d_name.name);
267269 dput(dentry);
268270 }
269− audit_log_format(ab, " dev=%s ino=%lu", inode->i_sb->s_id,
270− inode->i_ino);
271+ audit_log_format(ab, " dev=");
272+ audit_log_untrustedstring(ab, inode->i_sb->s_id);
273+ audit_log_format(ab, " ino=%lu", inode->i_ino);
271274 break;
272275 }
273276 case LSM_AUDIT_DATA_TASK: