]> git.p6c8.net - devedit.git/blobdiff - modules/Command.pm
Do not allow to change the properties of the virtual root directory
[devedit.git] / modules / Command.pm
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