Browse Source

Added checks for invalid filenames. (SD2-394)

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@307 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
6c7b1d237c
  1. 6
      src/Main/Base/Project/Src/Commands/FileCommands.cs
  2. 7
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs
  3. 3
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs
  4. 3
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs
  5. 3
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs
  6. 7
      src/Main/Base/Project/Src/Services/File/FileService.cs
  7. 17
      src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs
  8. 2
      src/Main/Core/Project/Src/Services/PropertyService/Properties.cs

6
src/Main/Base/Project/Src/Commands/FileCommands.cs

@ -129,11 +129,7 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -129,11 +129,7 @@ namespace ICSharpCode.SharpDevelop.Commands
if (!FileUtility.IsValidFileName(fileName)) {
MessageService.ShowMessage(StringParser.Parse("${res:ICSharpCode.SharpDevelop.Commands.SaveFile.InvalidFileNameError}", new string[,] {{"FileName", fileName}}));
if (!FileService.CheckFileName(fileName)) {
return;
}

7
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs

@ -124,7 +124,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -124,7 +124,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
}
public override void Refresh()
public override void Refresh()
{
base.Refresh();
if (Nodes.Count == 0) {
@ -352,13 +352,16 @@ namespace ICSharpCode.SharpDevelop.Project @@ -352,13 +352,16 @@ namespace ICSharpCode.SharpDevelop.Project
if (newName == null) {
return;
}
if (!FileService.CheckFileName(newName)) {
return;
}
string oldText = Text;
Text = newName;
if (Directory != null) {
string newPath = Path.Combine(Path.GetDirectoryName(Directory), newName);
if (System.IO.Directory.Exists(newPath)) {
if (System.IO.Directory.GetFiles(Directory).Length == 0) {
System.IO.Directory.Delete(Directory);
System.IO.Directory.Delete(Directory);
} else if (System.IO.Directory.GetFiles(newPath).Length == 0) {
System.IO.Directory.Delete(newPath);
FileService.RenameFile(Directory, newPath, true);

3
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs

@ -123,6 +123,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -123,6 +123,9 @@ namespace ICSharpCode.SharpDevelop.Project
if (newName == null) {
return;
}
if (!FileService.CheckFileName(newName)) {
return;
}
Text = newName;
if (FileName != null) {
string newFileName = Path.Combine(Path.GetDirectoryName(FileName), newName);

3
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs

@ -76,6 +76,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -76,6 +76,9 @@ namespace ICSharpCode.SharpDevelop.Project
public override void AfterLabelEdit(string newName)
{
if (!FileService.CheckFileName(newName)) {
return;
}
Text = folder.Location = folder.Name = newName;
ProjectService.SaveSolution();
}

3
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs

@ -122,6 +122,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -122,6 +122,9 @@ namespace ICSharpCode.SharpDevelop.Project
if (newName == null) {
return;
}
if (!FileService.CheckFileName(newName)) {
return;
}
Text = newName;
string newFileName = Path.Combine(solution.Directory, newName);

7
src/Main/Base/Project/Src/Services/File/FileService.cs

@ -51,6 +51,13 @@ namespace ICSharpCode.Core @@ -51,6 +51,13 @@ namespace ICSharpCode.Core
RecentOpen.AddLastProject(e.Solution.FileName);
}
public static bool CheckFileName(string fileName)
{
if (FileUtility.IsValidFileName(fileName))
return true;
MessageService.ShowMessage(StringParser.Parse("${res:ICSharpCode.SharpDevelop.Commands.SaveFile.InvalidFileNameError}", new string[,] {{"FileName", fileName}}));
return false;
}
class LoadFileWrapper
{

17
src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs

@ -181,10 +181,10 @@ namespace ICSharpCode.Core @@ -181,10 +181,10 @@ namespace ICSharpCode.Core
testDirectory = Path.GetFullPath(testDirectory.ToUpper());
return baseDirectory.Length <= testDirectory.Length &&
testDirectory.StartsWith(baseDirectory) &&
(testDirectory.Length == baseDirectory.Length ||
testDirectory[baseDirectory.Length] == Path.DirectorySeparatorChar ||
testDirectory[baseDirectory.Length] == Path.AltDirectorySeparatorChar);
testDirectory.StartsWith(baseDirectory) &&
(testDirectory.Length == baseDirectory.Length ||
testDirectory[baseDirectory.Length] == Path.DirectorySeparatorChar ||
testDirectory[baseDirectory.Length] == Path.AltDirectorySeparatorChar);
} catch (Exception) {
return false;
}
@ -276,10 +276,9 @@ namespace ICSharpCode.Core @@ -276,10 +276,9 @@ namespace ICSharpCode.Core
}
// platform independend : check for invalid path chars
foreach (char invalidChar in Path.GetInvalidPathChars()) {
if (fileName.IndexOf(invalidChar) >= 0) {
return false;
}
if (fileName.IndexOfAny(Path.GetInvalidPathChars()) >= 0) {
return false;
}
if (fileName.IndexOf('?') >= 0 || fileName.IndexOf('*') >= 0) {
return false;
@ -518,7 +517,7 @@ namespace ICSharpCode.Core @@ -518,7 +517,7 @@ namespace ICSharpCode.Core
return ObservedLoad(saveFileAs, fileName, FileErrorPolicy.Inform);
}
static void OnFileLoaded(FileNameEventArgs e)
static void OnFileLoaded(FileNameEventArgs e)
{
if (FileLoaded != null) {
FileLoaded(null, e);

2
src/Main/Core/Project/Src/Services/PropertyService/Properties.cs

@ -201,7 +201,7 @@ namespace ICSharpCode.Core @@ -201,7 +201,7 @@ namespace ICSharpCode.Core
public void Save(string fileName)
{
using (XmlTextWriter writer = new XmlTextWriter(fileName, Encoding.Default)) {
using (XmlTextWriter writer = new XmlTextWriter(fileName, Encoding.UTF8)) {
writer.Formatting = Formatting.Indented;
writer.WriteStartElement("Properties");
WriteProperties(writer);

Loading…
Cancel
Save