fix dir check
[freeside.git] / FS / FS / svc_acct.pm
index e46b4e5..8e29cb7 100644 (file)
@@ -676,7 +676,7 @@ sub check {
 
   my $ulen = $usernamemax || $self->dbdef_table->column('username')->length;
   if ( $username_uppercase ) {
-    $recref->{username} =~ /^([a-z0-9_\-\.]{$usernamemin,$ulen})$/
+    $recref->{username} =~ /^([a-z0-9_\-\.]{$usernamemin,$ulen})$/i
       or return "Illegal username: ". $recref->{username};
     $recref->{username} = $1;
   } else {
@@ -716,13 +716,14 @@ sub check {
 #    $error = $self->ut_textn('finger');
 #    return $error if $error;
     $self->getfield('finger') =~
-      /^([\w \t\!\@\#\$\%\&\(\)\-\+\;\:\'\"\,\.\?\/\*]*)$/
+      /^([\w \t\!\@\#\$\%\&\(\)\-\+\;\:\'\"\,\.\?\/\*\<\>]*)$/
         or return "Illegal finger: ". $self->getfield('finger');
     $self->setfield('finger', $1);
 
-    $recref->{dir} =~ /^([\/\w\-]*)$/
+    $recref->{dir} =~ /^([\/\w\-\.]*)$/
       or return "Illegal directory";
     $recref->{dir} = $1;
+    return "Illegal directory" if $recref->{dir} =~ /\.\./; #no ..
     unless ( $recref->{dir} ) {
       $recref->{dir} = $dir_prefix . '/';
       if ( $dirhash > 0 ) {
@@ -920,7 +921,7 @@ sub ssh {
 
 =head1 VERSION
 
-$Id: svc_acct.pm,v 1.48 2001-09-30 22:19:34 ivan Exp $
+$Id: svc_acct.pm,v 1.51 2001-10-22 14:48:28 ivan Exp $
 
 =head1 BUGS