Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/corlib/System.Security.Permissions/FileIOPermission.cs')
-rw-r--r--mcs/class/corlib/System.Security.Permissions/FileIOPermission.cs16
1 files changed, 7 insertions, 9 deletions
diff --git a/mcs/class/corlib/System.Security.Permissions/FileIOPermission.cs b/mcs/class/corlib/System.Security.Permissions/FileIOPermission.cs
index c1f6447e917..32581496223 100644
--- a/mcs/class/corlib/System.Security.Permissions/FileIOPermission.cs
+++ b/mcs/class/corlib/System.Security.Permissions/FileIOPermission.cs
@@ -147,7 +147,8 @@ namespace System.Security.Permissions {
// internal to avoid duplicate checks
internal void AddPathInternal (FileIOPermissionAccess access, string path)
{
- path = Path.GetFullPath (path);
+ // call InsecureGetFullPath (and not GetFullPath) to avoid recursion
+ path = Path.InsecureGetFullPath (path);
if ((access & FileIOPermissionAccess.Read) == FileIOPermissionAccess.Read)
readList.Add (path);
@@ -440,7 +441,7 @@ namespace System.Security.Permissions {
}
// LAMESPEC: docs don't say it must be a rooted path, but the MS implementation enforces it, so we will too.
if (!Path.IsPathRooted (path)) {
- string msg = Locale.GetText ("Absolute path information is required.");
+ string msg = Locale.GetText ("Absolute path information is required.");
throw new ArgumentException (msg, "path");
}
}
@@ -464,13 +465,13 @@ namespace System.Security.Permissions {
pathList.Clear ();
}
+ // note: all path in IList are already "full paths"
internal bool KeyIsSubsetOf (IList local, IList target)
{
bool result = false;
foreach (string l in local) {
- string c14nl = Path.GetFullPath (l);
foreach (string t in target) {
- if (c14nl.StartsWith (Path.GetFullPath (t))) {
+ if (l.StartsWith (t)) {
result = true;
break;
}
@@ -483,17 +484,14 @@ namespace System.Security.Permissions {
internal void UnionKeys (IList list, string[] paths)
{
- foreach (string p in paths) {
- // c14n
- string path = Path.GetFullPath (p);
+ foreach (string path in paths) {
int len = list.Count;
if (len == 0) {
list.Add (path);
}
else {
for (int i=0; i < len; i++) {
- // c14n
- string s = Path.GetFullPath ((string) list [i]);
+ string s = (string) list [i];
if (s.StartsWith (path)) {
// replace (with reduced version)
list [i] = path;