From: Stanislav Ievlev <inger@altlinux.ru>
Subject: Re: Pre-Fix for rename hole
Date: Mon, 04 Jun 2001 10:47:25 +0400
Next Article (by Subject): Re: Pre-Fix for rename hole Amon Ott
Previous Article (by Subject): Re: Pre-Fix for rename hole Amon Ott
Top of Thread: Pre-Fix for rename hole Amon Ott
Next in Thread: Re: Pre-Fix for rename hole Amon Ott
Articles sorted by: [Date]
[Author]
[Subject]
--------------070505020406040503040206
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Hello!
Amon Ott wrote:
>On Fre, 01 Jun 2001 Amon Ott wrote:
>
>>Hello again!
>>
>>Attached is a pre version of a fix for the rename hole. It contains
>>DELETE request, attribute setting and secure delete call for ext2. Everything
>>else will only be in 1.1.2-pre5.
>>
>>The patch is against kernel 2.4.4-rsbac-v1.1.2-pre4, but should also be working
>>with other 2.4 kernel versions and rsbac 1.1.1.
>>
>
>Ups, something went wrong with the atttachment. Sorry.
>
>Amon.
>
>
>------------------------------------------------------------------------
>
>--- linux-2.4.3-rsbac-1.1.2/fs/namei.c Fri Apr 20 17:36:34 2001
>+++ linux-2.4.4-rsbac-1.1.2/fs/namei.c Thu May 31 13:39:33 2001
>@@ -2489,7 +2489,9 @@
> #ifdef CONFIG_RSBAC
> enum rsbac_target_t rsbac_target;
> union rsbac_target_id_t rsbac_target_id;
>+ union rsbac_target_id_t rsbac_new_target_id;
> union rsbac_attribute_value_t rsbac_attribute_value;
>+ boolean target_exists = FALSE;
> #endif
>
> if (path_init(oldname, LOOKUP_PARENT, &oldnd))
>@@ -2534,6 +2536,10 @@
> if (newnd.last.name[newnd.last.len])
> goto exit4;
> }
>+ new_dentry = lookup_hash(&newnd.last, new_dir);
>+ error = PTR_ERR(new_dentry);
>+ if (IS_ERR(new_dentry))
>+ goto exit4;
>
> /* RSBAC */
> #ifdef CONFIG_RSBAC
>@@ -2559,6 +2565,7 @@
> rsbac_attribute_value))
> {
> error = -EPERM;
>+ dput(new_dentry);
> goto exit4;
> }
> if (rsbac_debug_aef)
>@@ -2576,19 +2583,64 @@
> rsbac_attribute_value))
> {
> error = -EPERM;
>+ dput(new_dentry);
> goto exit4;
> }
>+ if(new_dentry->d_inode)
>+ {
>+ target_exists = TRUE;
>+ if (rsbac_debug_aef)
>+ printk(KERN_DEBUG
>+ "do_rename() [sys_rename()]: calling ADF for DELETE on existing target\n");
>+ rsbac_target = T_FILE;
>+ if (S_ISDIR(new_dentry->d_inode->i_mode))
>+ rsbac_target = T_DIR;
>+ else if (S_ISFIFO (new_dentry->d_inode->i_mode))
>+ rsbac_target = T_FIFO;
>+ else if (S_ISLNK (new_dentry->d_inode->i_mode))
>+ rsbac_target = T_SYMLINK;
>+ rsbac_target_id.file.device = new_dentry->d_inode->i_dev;
>+ rsbac_target_id.file.inode = new_dentry->d_inode->i_ino;
>+ rsbac_target_id.file.dentry_p = new_dentry;
>+ rsbac_attribute_value.nlink = new_dentry->d_inode->i_nlink;
>+ if (!rsbac_adf_request(R_DELETE,
>+ current->pid,
>+ rsbac_target,
>+ rsbac_target_id,
>+ A_nlink,
>+ rsbac_attribute_value))
>+ {
>+ error = -EPERM;
>+ dput(new_dentry);
>+ goto exit4;
>+ }
>+ }
> #endif /* CONFIG_RSBAC */
>
I think we need to check parent directory for R_WRITE if target doesn't
exist.
--------------------
With best regards
Stanislav Ievlev.
--------------070505020406040503040206
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
<html><head></head><body>Hello!<br>
<br>
Amon Ott wrote:<br>
<blockquote type="cite" cite="mid:01060115275102.00940@marvin"><pre wrap="">On Fre, 01 Jun 2001 Amon Ott wrote:<br></pre>
<blockquote type="cite"><pre wrap="">Hello again!<br><br>Attached is a pre version of a fix for the rename hole. It contains<br>DELETE request, attribute setting and secure delete call for ext2. Everything<br>else will only be in 1.1.2-pre5.<br><br>The patch is against kernel 2.4.4-rsbac-v1.1.2-pre4, but should also be working<br>with other 2.4 kernel versions and rsbac 1.1.1.<br></pre></blockquote>
<pre wrap=""><!----><br>Ups, something went wrong with the atttachment. Sorry.<br><br>Amon.</pre>
<pre wrap=""><br><hr width="90%" size="4"><br>--- linux-2.4.3-rsbac-1.1.2/fs/namei.c Fri Apr 20 17:36:34 2001<br>+++ linux-2.4.4-rsbac-1.1.2/fs/namei.c Thu May 31 13:39:33 2001<br>@@ -2489,7 +2489,9 @@<br> #ifdef CONFIG_RSBAC<br> enum rsbac_target_t rsbac_target;<br> union rsbac_target_id_t rsbac_target_id;<br>+ union rsbac_target_id_t rsbac_new_target_id;<br> union rsbac_attribute_value_t rsbac_attribute_value;<br>+ boolean target_exists = FALSE;<br> #endif<br> <br> if (path_init(oldname, LOOKUP_PARENT, &oldnd))<br>@@ -2534,6 +2536,10 @@<br> if (newnd.last.name[newnd.last.len])<br> goto exit4;<br> }<br>+ new_dentry = lookup_hash(&newnd.last, new_dir);<br>+ error = PTR_ERR(new_dentry);<br>+ if (IS_ERR(new_dentry))<br>+ goto exit4;<br> <br> /* RSBAC */<br> #ifdef CONFIG_RSBAC<br>@@ -2559,6 +2565,7 @@<br> rsbac_attribute_value))<br> {<br> error = -EPERM;<br>+ dput(new_dentry);<br> goto exit4;<br> }<br> if (rsbac_debug_aef)<br>@@ -2576,19 +2583,64 @@<br> rsbac_attribute_value))<br> {<br> error = -EPERM;<br>+ dput(new_dentry);<br> goto exit4;<br> }<br>+ if(new_dentry->d_inode)<br>+ {<br>+ target_exists = TRUE;<br>+ if (rsbac_debug_aef)<br>+ printk(KERN_DEBUG<br>+ "do_rename() [sys_rename()]: calling ADF for DELETE on existing target\n");<br>+ rsbac_target = T_FILE;<br>+ if (S_ISDIR(new_dentry->d_inode->i_mode))<br>+ rsbac_target = T_DIR;<br>+ else if (S_ISFIFO (new_dentry->d_inode->i_mode))<br>+ rsbac_target = T_FIFO;<br>+ else if (S_ISLNK (new_dentry->d_inode->i_mode))<br>+ rsbac_target = T_SYMLINK;<br>+ rsbac_target_id.file.device = new_dentry->d_inode->i_dev;<br>+ rsbac_target_id.file.inode = new_dentry->d_inode->i_ino;<br>+ rsbac_target_id.file.dentry_p = new_dentry;<br>+ rsbac_attribute_value.nlink = new_dentry->d_inode->i_nlink;<br>+ if (!rsbac_adf_request(R_DELETE,<br>+ current->pid,<br>+ rsbac_target,<br>+ rsbac_target_id,<br>+ A_nlink,<br>+ rsbac_attribute_value))<br>+ {<br>+ error = -EPERM;<br>+ dput(new_dentry);<br>+ goto exit4;<br>+ }<br>+ }<br> #endif /* CONFIG_RSBAC */</pre>
</blockquote>
I think we need to check parent directory for R_WRITE if target doesn't exist.<br>
--------------------<br>
With best regards<br>
Stanislav Ievlev.<br>
<br>
<blockquote type="cite" cite="mid:01060115275102.00940@marvin"></blockquote>
</body></html>
--------------070505020406040503040206--
-
To unsubscribe from the rsbac list, send a mail to
majordomo@rsbac.org with
unsubscribe rsbac
as single line in the body.
Next Article (by Subject): Re: Pre-Fix for rename hole Amon Ott
Previous Article (by Subject): Re: Pre-Fix for rename hole Amon Ott
Top of Thread: Pre-Fix for rename hole Amon Ott
Next in Thread: Re: Pre-Fix for rename hole Amon Ott
Articles sorted by: [Date]
[Author]
[Subject]