• R/O
  • SSH
  • HTTPS

kotoli: Commit


Commit MetaInfo

Revision210 (tree)
Time2010-07-17 13:47:38
Authorsgry

Log Message

修正)フォルダ名に「..」を指定した場合はエラー扱いするように

Change Summary

Incremental Difference

--- trunk/Kotoli/KotoliForm.cs (revision 209)
+++ trunk/Kotoli/KotoliForm.cs (revision 210)
@@ -664,11 +664,7 @@
664664 {
665665 if (e.Label != null)
666666 {
667- if( e.Label != String.Empty
668- && e.Label.IndexOfAny(Path.GetInvalidPathChars()) < 0
669- && e.Label.IndexOf(Path.VolumeSeparatorChar) < 0
670- && e.Label.IndexOf(Path.DirectorySeparatorChar) < 0
671- && e.Label.IndexOf(Path.AltDirectorySeparatorChar) < 0 )
667+ if( KotoliLogic.IsBadFileName(e.Label) == false )
672668 {
673669 e.Node.EndEdit(false);
674670 // 新しいラベル名が有効なときの操作
--- trunk/Kotoli/KotoliLogic.cs (revision 209)
+++ trunk/Kotoli/KotoliLogic.cs (revision 210)
@@ -118,11 +118,7 @@
118118
119119 // ユーザが指定したフォルダ名を取得
120120 newDirName = form.NewFolderName;
121- if( newDirName == ""
122- || 0 <= newDirName.IndexOfAny(Path.GetInvalidPathChars())
123- || 0 <= newDirName.IndexOf(Path.VolumeSeparatorChar)
124- || 0 <= newDirName.IndexOf(Path.DirectorySeparatorChar)
125- || 0 <= newDirName.IndexOf(Path.AltDirectorySeparatorChar) )
121+ if( IsBadFileName(newDirName) )
126122 {
127123 _kotoliForm.AlertError( KotoliForm.InvalidDirectoryNameMessage );
128124 return;
@@ -958,23 +954,27 @@
958954 // パスが一致するノードを子から検索
959955 for(;;)
960956 {
961- // 検索対象のパスはこのノードのパスで始まっているなら、このノードの中に入る
962- if( filePath.StartsWith(node.Tag as String) )
957+ // 検索対象のパスがこのノードのパスで始まっているなら、このノードの中に入る
958+ string nodePath = (string)node.Tag;
959+ if( filePath.StartsWith(nodePath) )
963960 {
964961 // このノードが検索対象ならば終了
965- if( filePath.Length == (node.Tag as String).Length )
962+ if( filePath.Length == nodePath.Length )
966963 {
967964 exactMatch = true;
968965 return node;
969966 }
970-
971- // 子ノードに入って検索を継続
972- if( node.Nodes.Count <= 0 || node.Nodes[0].Tag == null )
967+ else if( //NO_NEED//nodePath.Length < filePath.Length &&
968+ filePath[nodePath.Length] == Path.DirectorySeparatorChar )
973969 {
974- return node;
970+ // 子ノードに入って検索を継続
971+ if( node.Nodes.Count <= 0 || node.Nodes[0].Tag == null )
972+ {
973+ return node;
974+ }
975+ node = node.Nodes[0];
976+ continue;
975977 }
976- node = node.Nodes[0];
977- continue;
978978 }
979979
980980 // 隣の子へ
@@ -1051,6 +1051,18 @@
10511051
10521052 return false;
10531053 }
1054+
1055+ public static bool IsBadFileName( string fileName )
1056+ {
1057+ return (fileName == ""
1058+ || fileName == "."
1059+ || fileName == ".."
1060+ || 0 <= fileName.IndexOfAny(Path.GetInvalidPathChars())
1061+ || 0 <= fileName.IndexOf(Path.VolumeSeparatorChar)
1062+ || 0 <= fileName.IndexOf(Path.DirectorySeparatorChar)
1063+ || 0 <= fileName.IndexOf(Path.AltDirectorySeparatorChar)
1064+ );
1065+ }
10541066 #endregion
10551067 }
10561068 }
Show on old repository browser