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

Showing the changes to security (2 of 2 files). Show all

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
56 audit_log_format(ab, " name=");56 audit_log_format(ab, " name=");
57 audit_log_untrustedstring(ab, fname);57 audit_log_untrustedstring(ab, fname);
58 }58 }
59 if (inode)59 if (inode) {
60 audit_log_format(ab, " dev=%s ino=%lu",60 audit_log_format(ab, " dev=");
61 inode->i_sb->s_id, inode->i_ino);61 audit_log_untrustedstring(ab, inode->i_sb->s_id);
62 audit_log_format(ab, " ino=%lu", inode->i_ino);
63 }
62 audit_log_format(ab, " res=%d", !result ? 0 : 1);64 audit_log_format(ab, " res=%d", !result ? 0 : 1);
63 audit_log_end(ab);65 audit_log_end(ab);
64}66}
security/lsm_audit.c+13−10
@@ -235,10 +235,11 @@ static void dump_common_audit_data(struct audit_buffer *ab, · 234 unmodified lines
235 audit_log_d_path(ab, "path=", &a->u.path);235 audit_log_d_path(ab, "path=", &a->u.path);
236 236
237 inode = a->u.path.dentry->d_inode;237 inode = a->u.path.dentry->d_inode;
238 if (inode)238 if (inode) {
239 audit_log_format(ab, " dev=%s ino=%lu",239 audit_log_format(ab, " dev=");
240 inode->i_sb->s_id,240 audit_log_untrustedstring(ab, inode->i_sb->s_id);
241 inode->i_ino);241 audit_log_format(ab, " ino=%lu", inode->i_ino);
242 }
242 break;243 break;
243 }244 }
244 case LSM_AUDIT_DATA_DENTRY: {245 case LSM_AUDIT_DATA_DENTRY: {
@@ -248,10 +249,11 @@ static void dump_common_audit_data(struct audit_buffer *ab, · 3 unmodified lines
248 audit_log_untrustedstring(ab, a->u.dentry->d_name.name);249 audit_log_untrustedstring(ab, a->u.dentry->d_name.name);
249 250
250 inode = a->u.dentry->d_inode;251 inode = a->u.dentry->d_inode;
251 if (inode)252 if (inode) {
252 audit_log_format(ab, " dev=%s ino=%lu",253 audit_log_format(ab, " dev=");
253 inode->i_sb->s_id,254 audit_log_untrustedstring(ab, inode->i_sb->s_id);
254 inode->i_ino);255 audit_log_format(ab, " ino=%lu", inode->i_ino);
256 }
255 break;257 break;
256 }258 }
257 case LSM_AUDIT_DATA_INODE: {259 case LSM_AUDIT_DATA_INODE: {
@@ -266,8 +268,9 @@ static void dump_common_audit_data(struct audit_buffer *ab, · 8 unmodified lines
266 dentry->d_name.name);268 dentry->d_name.name);
267 dput(dentry);269 dput(dentry);
268 }270 }
269 audit_log_format(ab, " dev=%s ino=%lu", inode->i_sb->s_id,271 audit_log_format(ab, " dev=");
270 inode->i_ino);272 audit_log_untrustedstring(ab, inode->i_sb->s_id);
273 audit_log_format(ab, " ino=%lu", inode->i_ino);
271 break;274 break;
272 }275 }
273 case LSM_AUDIT_DATA_TASK:276 case LSM_AUDIT_DATA_TASK: