Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Hi,
please unblock keepass2  2.19+dfsg-2 it fixes an insecure tempfile
creation issue and an works around an important issue in mono winforms
which can prevent the program from starting (#686017).

thanks
Julian Taylor
diff -Nru keepass2-2.19+dfsg/debian/changelog 
keepass2-2.19+dfsg/debian/changelog
--- keepass2-2.19+dfsg/debian/changelog 2012-05-02 19:21:30.000000000 +0200
+++ keepass2-2.19+dfsg/debian/changelog 2012-09-17 21:32:24.000000000 +0200
@@ -1,4 +1,14 @@
-keepass2 (2.19+dfsg-1) UNRELEASED; urgency=low
+keepass2 (2.19+dfsg-2) unstable; urgency=medium
+
+  * fix-insecure-tempfile-use.patch:
+    - create small tempfiles in user owned directory instead of /tmp
+  * enforce-minimum-window-and-slider-size.patch:
+    - Closes: #686017
+  * suggest mono-dmcs needed to compile plugins
+
+ -- Julian Taylor <jtaylor.deb...@googlemail.com>  Mon, 17 Sep 2012 19:31:53 
+0000
+
+keepass2 (2.19+dfsg-1) unstable; urgency=low
 
   * New upstream release (LP: #990557)
     - drop upstream applied fix-winforms-eventordering.patch
diff -Nru keepass2-2.19+dfsg/debian/control keepass2-2.19+dfsg/debian/control
--- keepass2-2.19+dfsg/debian/control   2012-05-02 19:21:30.000000000 +0200
+++ keepass2-2.19+dfsg/debian/control   2012-09-17 21:32:24.000000000 +0200
@@ -19,7 +19,7 @@
 Package: keepass2
 Architecture: all
 Depends: ${cli:Depends}, ${misc:Depends}
-Suggests: keepass2-doc, xdotool
+Suggests: keepass2-doc, mono-dmcs, xdotool
 Description: Password manager
  KeePass is a easy-to-use password manager for Windows, Linux, Mac OS X and
  mobile devices. You can store your passwords in highly-encrypted databases,
diff -Nru 
keepass2-2.19+dfsg/debian/patches/enforce-minimum-window-and-slider-size.patch 
keepass2-2.19+dfsg/debian/patches/enforce-minimum-window-and-slider-size.patch
--- 
keepass2-2.19+dfsg/debian/patches/enforce-minimum-window-and-slider-size.patch  
    1970-01-01 01:00:00.000000000 +0100
+++ 
keepass2-2.19+dfsg/debian/patches/enforce-minimum-window-and-slider-size.patch  
    2012-09-17 21:32:24.000000000 +0200
@@ -0,0 +1,52 @@
+From: Julian Taylor <jtaylor.deb...@googlemail.com>
+Date: Mon, 17 Sep 2012 21:15:05 +0200
+Subject: enforce minimum window and slider size
+
+Winforms crashes when the listview elements are not visible on loading.
+As the windows sizes are recalled on each start this can prevent keepass
+from opening.
+To avoid this set a minimum window and slider size so the elements are
+always visible.
+
+Applied-Upstream: 2.20
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=686017
+---
+ KeePass/Forms/MainForm.cs |   18 +++++++++++++++++-
+ 1 file changed, 17 insertions(+), 1 deletion(-)
+
+--- a/KeePass/Forms/MainForm.cs
++++ b/KeePass/Forms/MainForm.cs
+@@ -239,7 +239,17 @@
+ 
+                       if((sizeX != AppDefs.InvalidWindowValue) &&
+                               (sizeY != AppDefs.InvalidWindowValue) && 
bWndValid)
++                      {
++                              if(MonoWorkarounds.IsRequired) // Debian 686017
++                              {
++                                      sizeX = Math.Max(250, sizeX);
++                                      sizeY = Math.Max(250, sizeY);
++                              }
++
+                               this.Size = new Size(sizeX, sizeY);
++                      }
++                      if(MonoWorkarounds.IsRequired) // Debian 686017
++                              this.MinimumSize = new Size(250, 250);
+ 
+                       Rectangle rectRestWindow = new Rectangle(wndX, wndY,
+                               this.Size.Width, this.Size.Height);
+@@ -323,8 +333,14 @@
+                       {
+                               float fSplitPos = mw.SplitterHorizontalFrac;
+                               if(fSplitPos == float.Epsilon) fSplitPos = 
0.8333f;
+-                              m_splitHorizontal.SplitterDistance = 
(int)Math.Round(fSplitPos *
++                              // m_splitHorizontal.SplitterDistance = 
(int)Math.Round(fSplitPos *
++                              //      (double)m_splitHorizontal.Height);
++                              int iSplitDist = (int)Math.Round(fSplitPos *
+                                       (double)m_splitHorizontal.Height);
++                              if(MonoWorkarounds.IsRequired) // Debian 686017
++                                      m_splitHorizontal.SplitterDistance = 
Math.Max(35, iSplitDist);
++                              else
++                                      m_splitHorizontal.SplitterDistance = 
iSplitDist;
+ 
+                               fSplitPos = mw.SplitterVerticalFrac;
+                               if(fSplitPos == float.Epsilon) fSplitPos = 
0.25f;
diff -Nru keepass2-2.19+dfsg/debian/patches/fix-insecure-tempfile-use.patch 
keepass2-2.19+dfsg/debian/patches/fix-insecure-tempfile-use.patch
--- keepass2-2.19+dfsg/debian/patches/fix-insecure-tempfile-use.patch   
1970-01-01 01:00:00.000000000 +0100
+++ keepass2-2.19+dfsg/debian/patches/fix-insecure-tempfile-use.patch   
2012-09-17 21:32:24.000000000 +0200
@@ -0,0 +1,156 @@
+From: Julian Taylor <jtaylor.deb...@googlemail.com>
+Date: Sun, 16 Sep 2012 17:03:31 +0200
+Subject: fix insecure tempfile use
+
+create messaging and mutex files in XDG_{RUNTIME,DATA}_DIR instead of
+/tmp
+Applied-Upstream: 2.21
+---
+ KeePass/Plugins/PlgxPlugin.cs      |    2 +-
+ KeePass/Program.cs                 |    2 +-
+ KeePass/Util/GlobalMutexPool.cs    |    3 ++-
+ KeePass/Util/IpcBroadcast.Fsw.cs   |    5 +++--
+ KeePass/Util/IpcUtilEx.cs          |    2 +-
+ KeePass/Util/WinUtil.cs            |    2 +-
+ KeePassLib/Native/NativeMethods.cs |   21 +++++++++++++++++++++
+ KeePassLib/Utility/UrlUtil.cs      |   17 +++++++++++++++++
+ 8 files changed, 47 insertions(+), 7 deletions(-)
+
+--- a/KeePass/Plugins/PlgxPlugin.cs
++++ b/KeePass/Plugins/PlgxPlugin.cs
+@@ -270,7 +270,7 @@
+ 
+               private static string CreateTempDirectory()
+               {
+-                      string strTmpRoot = Path.GetTempPath();
++                      string strTmpRoot = UrlUtil.GetTempPath();
+                       strTmpRoot = 
UrlUtil.EnsureTerminatingSeparator(strTmpRoot, false);
+                       strTmpRoot += (new PwUuid(true)).ToHexString();
+ 
+--- a/KeePass/Program.cs
++++ b/KeePass/Program.cs
+@@ -279,7 +279,7 @@
+                               try
+                               {
+                                       string strFileOut = 
UrlUtil.EnsureTerminatingSeparator(
+-                                              Path.GetTempPath(), false) + 
"KeePass_UrlOverride.tmp";
++                                              UrlUtil.GetTempPath(), false) + 
"KeePass_UrlOverride.tmp";
+                                       string strContent = 
("[KeePass]\r\nKeeURLOverride=" +
+                                               
Program.Config.Integration.UrlOverride + "\r\n");
+                                       File.WriteAllText(strFileOut, 
strContent);
+--- a/KeePass/Util/GlobalMutexPool.cs
++++ b/KeePass/Util/GlobalMutexPool.cs
+@@ -201,7 +201,8 @@
+ 
+               private static string GetMutexPath(string strName)
+               {
+-                      string strDir = 
UrlUtil.EnsureTerminatingSeparator(Path.GetTempPath(), false);
++                      string strDir = UrlUtil.EnsureTerminatingSeparator(
++                              UrlUtil.GetTempPath(), false);
+                       return (strDir + IpcUtilEx.IpcMsgFilePreID + 
IpcBroadcast.GetUserID() +
+                               "-Mutex-" + strName + ".tmp");
+               }
+--- a/KeePass/Util/IpcBroadcast.Fsw.cs
++++ b/KeePass/Util/IpcBroadcast.Fsw.cs
+@@ -49,7 +49,8 @@
+               {
+                       if(m_strMsgFilePath != null) return;
+ 
+-                      string strDir = 
UrlUtil.EnsureTerminatingSeparator(Path.GetTempPath(), false);
++                      string strDir = UrlUtil.EnsureTerminatingSeparator(
++                              UrlUtil.GetTempPath(), false);
+                       m_strMsgFileName = IpcUtilEx.IpcMsgFilePreID + 
GetUserID() +
+                               IpcUtilEx.IpcMsgFilePostID;
+                       m_strMsgFilePath = strDir + m_strMsgFileName;
+@@ -109,7 +110,7 @@
+               {
+                       FswEnsurePaths();
+ 
+-                      m_fsw = new FileSystemWatcher(Path.GetTempPath(), 
m_strMsgFileName);
++                      m_fsw = new FileSystemWatcher(UrlUtil.GetTempPath(), 
m_strMsgFileName);
+                       m_fsw.IncludeSubdirectories = false;
+                       m_fsw.NotifyFilter = (NotifyFilters.CreationTime | 
NotifyFilters.LastWrite);
+ 
+--- a/KeePass/Util/IpcUtilEx.cs
++++ b/KeePass/Util/IpcUtilEx.cs
+@@ -115,7 +115,7 @@
+               {
+                       try
+                       {
+-                              string str = Path.GetTempPath();
++                              string str = UrlUtil.GetTempPath();
+                               str = UrlUtil.EnsureTerminatingSeparator(str, 
false);
+                               
+                               return (str + IpcMsgFilePreID + nId.ToString() 
+ ".tmp");
+--- a/KeePass/Util/WinUtil.cs
++++ b/KeePass/Util/WinUtil.cs
+@@ -381,7 +381,7 @@
+                               char chCur = char.ToUpper(strCur[0]);
+                               if(chPar != chCur) return string.Empty;
+ 
+-                              string strTemp = Path.GetTempPath();
++                              string strTemp = UrlUtil.GetTempPath();
+                               Directory.SetCurrentDirectory(strTemp);
+ 
+                               return strCur;
+--- a/KeePassLib/Native/NativeMethods.cs
++++ b/KeePassLib/Native/NativeMethods.cs
+@@ -21,6 +21,10 @@
+ using System.Text;
+ using System.Security;
+ using System.Runtime.InteropServices;
++using System.IO;
++using System.Diagnostics;
++
++using KeePassLib.Utility;
+ 
+ namespace KeePassLib.Native
+ {
+@@ -150,5 +154,22 @@
+                       return StrCmpLogicalW(x, y);
+ #endif
+               }
++
++              internal static string GetUserRuntimeDir()
++              {
++                      string strRtDir = 
Environment.GetEnvironmentVariable("XDG_RUNTIME_DIR");
++                      if(string.IsNullOrEmpty(strRtDir))
++                              strRtDir = 
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
++                      if(string.IsNullOrEmpty(strRtDir))
++                      {
++                              Debug.Assert(false);
++                              return Path.GetTempPath(); // Not UrlUtil 
(otherwise cyclic)
++                      }
++
++                      strRtDir = UrlUtil.EnsureTerminatingSeparator(strRtDir, 
false);
++                      strRtDir += PwDefs.ShortProductName;
++
++                      return strRtDir;
++              }
+       }
+ }
+--- a/KeePassLib/Utility/UrlUtil.cs
++++ b/KeePassLib/Utility/UrlUtil.cs
+@@ -588,5 +588,22 @@
+ 
+                       return false;
+               }
++
++              public static string GetTempPath()
++              {
++                      string strDir;
++                      if(NativeLib.IsUnix())
++                              strDir = NativeMethods.GetUserRuntimeDir();
++                      else strDir = Path.GetTempPath();
++
++                      try
++                      {
++                              if(Directory.Exists(strDir) == false)
++                                      Directory.CreateDirectory(strDir);
++                      }
++                      catch(Exception) { Debug.Assert(false); }
++
++                      return strDir;
++              }
+       }
+ }
diff -Nru keepass2-2.19+dfsg/debian/patches/series 
keepass2-2.19+dfsg/debian/patches/series
--- keepass2-2.19+dfsg/debian/patches/series    2012-05-02 19:21:30.000000000 
+0200
+++ keepass2-2.19+dfsg/debian/patches/series    2012-09-17 21:32:24.000000000 
+0200
@@ -7,3 +7,5 @@
 enable-local-help.patch
 work-around-issues-with-autotype-and-keyboard-layout.patch
 disable-autoupdate-dialog.patch
+fix-insecure-tempfile-use.patch
+enforce-minimum-window-and-slider-size.patch

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to