rh#209467# CVE-2006-5072
This commit is contained in:
parent
208c8c9aab
commit
84c79415ee
109
mono-CVE-2006-5072-TempFileCollection.patch
Normal file
109
mono-CVE-2006-5072-TempFileCollection.patch
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
--- mono-1.1.17.1.orig/mcs/class/System/System.CodeDom.Compiler/TempFileCollection.cs 2006-07-05 22:58:48.000000000 +0100
|
||||||
|
+++ mono-1.1.17.1/mcs/class/System/System.CodeDom.Compiler/TempFileCollection.cs 2006-10-06 08:46:00.000000000 +0100
|
||||||
|
@@ -31,6 +31,7 @@
|
||||||
|
using System.IO;
|
||||||
|
using System.Security;
|
||||||
|
using System.Security.Permissions;
|
||||||
|
+using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
namespace System.CodeDom.Compiler {
|
||||||
|
|
||||||
|
@@ -45,6 +46,7 @@
|
||||||
|
bool keepfiles;
|
||||||
|
string basepath;
|
||||||
|
Random rnd;
|
||||||
|
+ string ownTempDir;
|
||||||
|
|
||||||
|
public TempFileCollection ()
|
||||||
|
: this (String.Empty, false)
|
||||||
|
@@ -67,16 +69,15 @@
|
||||||
|
{
|
||||||
|
get {
|
||||||
|
if(basepath==null) {
|
||||||
|
- // note: this property *cannot* change TempDir property
|
||||||
|
- string temp = tempdir;
|
||||||
|
- if (temp.Length == 0) {
|
||||||
|
- // this call ensure the Environment permissions check
|
||||||
|
- temp = Path.GetTempPath ();
|
||||||
|
- }
|
||||||
|
|
||||||
|
if (rnd == null)
|
||||||
|
rnd = new Random ();
|
||||||
|
|
||||||
|
+ // note: this property *cannot* change TempDir property
|
||||||
|
+ string temp = tempdir;
|
||||||
|
+ if (temp.Length == 0)
|
||||||
|
+ temp = GetOwnTempDir ();
|
||||||
|
+
|
||||||
|
// Create a temporary file at the target directory. This ensures
|
||||||
|
// that the generated file name is unique.
|
||||||
|
FileStream f = null;
|
||||||
|
@@ -111,6 +112,32 @@
|
||||||
|
return(basepath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ string GetOwnTempDir ()
|
||||||
|
+ {
|
||||||
|
+ if (ownTempDir != null)
|
||||||
|
+ return ownTempDir;
|
||||||
|
+
|
||||||
|
+ // this call ensure the Environment permissions check
|
||||||
|
+ string basedir = Path.GetTempPath ();
|
||||||
|
+
|
||||||
|
+ // Create a subdirectory with the correct user permissions
|
||||||
|
+ int res = -1;
|
||||||
|
+ do {
|
||||||
|
+ int num = rnd.Next ();
|
||||||
|
+ num++;
|
||||||
|
+ ownTempDir = Path.Combine (basedir, num.ToString("x"));
|
||||||
|
+ if (Directory.Exists (ownTempDir))
|
||||||
|
+ continue;
|
||||||
|
+ res = mkdir (ownTempDir, 0x1c0);
|
||||||
|
+ if (res != 0) {
|
||||||
|
+ if (!Directory.Exists (ownTempDir))
|
||||||
|
+ throw new IOException ();
|
||||||
|
+ // Somebody already created the dir, keep trying
|
||||||
|
+ }
|
||||||
|
+ } while (res != 0);
|
||||||
|
+ return ownTempDir;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
int ICollection.Count {
|
||||||
|
get {
|
||||||
|
@@ -190,14 +217,25 @@
|
||||||
|
|
||||||
|
public void Delete()
|
||||||
|
{
|
||||||
|
- string[] filenames=new string[filehash.Count];
|
||||||
|
- filehash.Keys.CopyTo(filenames, 0);
|
||||||
|
+ bool allDeleted = true;
|
||||||
|
+ string[] filenames = new string[filehash.Count];
|
||||||
|
+ filehash.Keys.CopyTo (filenames, 0);
|
||||||
|
|
||||||
|
foreach(string file in filenames) {
|
||||||
|
if((bool)filehash[file]==false) {
|
||||||
|
File.Delete(file);
|
||||||
|
filehash.Remove(file);
|
||||||
|
- }
|
||||||
|
+ } else
|
||||||
|
+ allDeleted = false;
|
||||||
|
+ }
|
||||||
|
+ if (basepath != null) {
|
||||||
|
+ string tmpFile = basepath + ".tmp";
|
||||||
|
+ File.Delete (tmpFile);
|
||||||
|
+ basepath = null;
|
||||||
|
+ }
|
||||||
|
+ if (allDeleted && ownTempDir != null) {
|
||||||
|
+ Directory.Delete (ownTempDir, true);
|
||||||
|
+ ownTempDir = null;
|
||||||
|
}
|
||||||
|
if (basepath != null) {
|
||||||
|
string tmpFile = basepath + ".tmp";
|
||||||
|
@@ -228,5 +266,6 @@
|
||||||
|
Dispose(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ [DllImport ("libc")] private static extern int mkdir (string olpath, uint mode);
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
Name: mono
|
Name: mono
|
||||||
Version: 1.1.17.1
|
Version: 1.1.17.1
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: a .NET runtime environment
|
Summary: a .NET runtime environment
|
||||||
|
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
@ -31,6 +31,7 @@ Patch1: mono-1.1.13.4-selinux-ia64.patch
|
|||||||
Patch2: mono-1.1.13.4-ppc-threading.patch
|
Patch2: mono-1.1.13.4-ppc-threading.patch
|
||||||
Patch3: mono-libdir.patch
|
Patch3: mono-libdir.patch
|
||||||
Patch4: mono-1.1.17.1-use-monodir.patch
|
Patch4: mono-1.1.17.1-use-monodir.patch
|
||||||
|
Patch5: mono-CVE-2006-5072-TempFileCollection.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The Mono runtime implements a JIT engine for the ECMA CLI
|
The Mono runtime implements a JIT engine for the ECMA CLI
|
||||||
@ -252,6 +253,7 @@ which is fully managed and actively maintained.
|
|||||||
%patch2 -p1 -b .ppc-threading
|
%patch2 -p1 -b .ppc-threading
|
||||||
%patch3 -p1 -b .libdir
|
%patch3 -p1 -b .libdir
|
||||||
%patch4 -p1 -b .use-monodir
|
%patch4 -p1 -b .use-monodir
|
||||||
|
%patch5 -p1 -b .CVE-2006-5072
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%ifarch ia64 s390
|
%ifarch ia64 s390
|
||||||
@ -535,6 +537,9 @@ install monodir $RPM_BUILD_ROOT%{_bindir}
|
|||||||
%gac_dll IBM.Data.DB2
|
%gac_dll IBM.Data.DB2
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Oct 6 2006 Caolan McNamara <caolanm@redhat.com> - 1.1.17.1-2
|
||||||
|
- CVE-2006-5072
|
||||||
|
|
||||||
* Mon Sep 4 2006 Alexander Larsson <alexl@redhat.com> - 1.1.17.1-1
|
* Mon Sep 4 2006 Alexander Larsson <alexl@redhat.com> - 1.1.17.1-1
|
||||||
- update to 1.1.17.1
|
- update to 1.1.17.1
|
||||||
- Add one file nunit-devel package due to packaging guidelines (#205056)
|
- Add one file nunit-devel package due to packaging guidelines (#205056)
|
||||||
|
Loading…
Reference in New Issue
Block a user