]> git.p6c8.net - devedit.git/commitdiff
Do not allow to change the properties of the virtual root directory
authorpcanterino <>
Mon, 6 Dec 2004 16:25:02 +0000 (16:25 +0000)
committerpcanterino <>
Mon, 6 Dec 2004 16:25:02 +0000 (16:25 +0000)
errors.dat
modules/Command.pm

index 25351c4993d9b3854369ee3085c1a3c7eebd908f..23de6c1552990c9eaedc5de02874966ede03cc6d 100644 (file)
@@ -2,6 +2,7 @@
 
 above_root     = Accessing files and directories above the virtual root directory is forbidden.
 binary         = This editor is not able to view/edit binary files.
+chprop_root    = You are not allowed to change the properties of the root directory.
 cmd_unknown    = Unknown command: '{COMMAND}'
 copy_failed    = Could not copy '{FILE}' to '{NEW_FILE}'.
 create_ar      = You aren't allowed to create files and directories above the virtual root directory.
index d2c46c4c0400cdafc918eb7039f58f478e365fb0..f3a7158d6d3c30f754b8b7d82908e01eb8be9090 100644 (file)
@@ -6,7 +6,7 @@ package Command;
 # Execute Dev-Editor's commands
 #
 # Author:        Patrick Canterino <patrick@patshaping.de>
-# Last modified: 2004-12-03
+# Last modified: 2004-12-06
 #
 
 use strict;
@@ -778,72 +778,81 @@ sub exec_chprop($$)
  {
   # System supports user and groups
 
-  if(-o $physical)
+  if($virtual ne "/")
   {
-   # We own this file
+   # Not the root directory
 
-   if($mode || $group)
+   if(-o $physical)
    {
-    if($mode)
+    # We own this file
+
+    if($mode || $group)
     {
-     # Change the mode
+     if($mode)
+     {
+      # Change the mode
 
-     chmod(oct($mode),$physical);
-    }
+      chmod(oct($mode),$physical);
+     }
 
-    if($group)
-    {
-     # Change the group using the `chgrp` system command
+     if($group)
+     {
+      # Change the group using the `chgrp` system command
+
+      return error($config->{'errors'}->{'invalid_group'},$dir,{GROUP => encode_entities($group)}) unless($group =~ /^[a-z0-9_]+[a-z0-9_-]*$/i);
+      system("chgrp",$group,$physical);
+     }
 
-     return error($config->{'errors'}->{'invalid_group'},$dir,{GROUP => encode_entities($group)}) unless($group =~ /^[a-z0-9_]+[a-z0-9_-]*$/i);
-     system("chgrp",$group,$physical);
+     return devedit_reload({command => 'show', file => $dir});
     }
+    else
+    {
+     # Display the form
 
-    return devedit_reload({command => 'show', file => $dir});
-   }
-   else
-   {
-    # Display the form
+     my @stat = stat($physical);
+     my $mode = $stat[2];
+     my $gid  = $stat[5];
 
-    my @stat = stat($physical);
-    my $mode = $stat[2];
-    my $gid  = $stat[5];
+     my $tpl = new Template;
+     $tpl->read_file($config->{'templates'}->{'chprop'});
 
-    my $tpl = new Template;
-    $tpl->read_file($config->{'templates'}->{'chprop'});
+     # Insert file properties into the template
 
-    # Insert file properties into the template
+     $tpl->fillin("MODE_OCTAL",substr(sprintf("%04o",$mode),-4));
+     $tpl->fillin("MODE_STRING",mode_string($mode));
+     $tpl->fillin("GID",$gid);
 
-    $tpl->fillin("MODE_OCTAL",substr(sprintf("%04o",$mode),-4));
-    $tpl->fillin("MODE_STRING",mode_string($mode));
-    $tpl->fillin("GID",$gid);
+     if(my $group = getgrgid($gid))
+     {
+      $tpl->fillin("GROUP",encode_entities($group));
+      $tpl->parse_if_block("group_detected",1);
+     }
+     else
+     {
+      $tpl->parse_if_block("group_detected",0);
+     }
 
-    if(my $group = getgrgid($gid))
-    {
-     $tpl->fillin("GROUP",encode_entities($group));
-     $tpl->parse_if_block("group_detected",1);
-    }
-    else
-    {
-     $tpl->parse_if_block("group_detected",0);
-    }
+     # Insert other information
 
-    # Insert other information
+     $tpl->fillin("FILE",$virtual);
+     $tpl->fillin("DIR",$dir);
+     $tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
+     $tpl->fillin("SCRIPT",$script);
 
-    $tpl->fillin("FILE",$virtual);
-    $tpl->fillin("DIR",$dir);
-    $tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
-    $tpl->fillin("SCRIPT",$script);
+     my $output = header(-type => "text/html");
+     $output   .= $tpl->get_template;
 
-    my $output = header(-type => "text/html");
-    $output   .= $tpl->get_template;
-
-    return \$output;
+     return \$output;
+    }
+   }
+   else
+   {
+    return error($config->{'errors'}->{'not_owner'},$dir,{FILE => $virtual});
    }
   }
   else
   {
-   return error($config->{'errors'}->{'not_owner'},$dir,{FILE => $virtual});
+   return error($config->{'errors'}->{'chprop_root'},"/");
   }
  }
  else

patrick-canterino.de