Hi Angel and Salvatore,

On Sun, Mar 24, 2013 at 01:44:35PM +0100, Salvatore Bonaccorso wrote:

> On Sun, Mar 24, 2013 at 12:09:38PM +0100, Salvatore Bonaccorso wrote:
> > Disclaimer: not part of the release team but noticed #702911 as the
> > corresponding #702905 in almanah fixes a security bug.
> > 
> > It looks that your unblock request never went trough the list, as the
> > debdiff is quite big. At this stage of the release the release team
> > will probably not acknowledge this unblock request.
> > 
> > I did only a short test: this looks also to a regression from Squeeze,
> > as in Squeeze it is possible to have a diary encrypted. But upgrading
> > to wheezy then the diary.db does not get encrypted after closing.
> 
> Was a little bit to fast hitting enter sending the email, and did not
> propose something to this. With the above, I think best approach would
> be to upload an almanah package trough t-p-u versioned as
> 0.9.0-1+deb7u1 containing only the fix needed.

I took a look the patch, and it seems only the very last part (which changes
the code) is actually needed. I created a patch for a TPU version with only
this change and did some basic testing. With this patch, the db is encrypted.

> But this needs first an approval by the release team.

Obviously. But that seems more likely than a review of the diff between the
versions in wheeze and sid.

Cheers,

Ivo

diff -Nru almanah-0.9.0/debian/changelog almanah-0.9.0/debian/changelog
--- almanah-0.9.0/debian/changelog      2012-04-03 14:25:33.000000000 +0200
+++ almanah-0.9.0/debian/changelog      2013-03-24 15:02:41.000000000 +0100
@@ -1,3 +1,11 @@
+almanah (0.9.0-1+deb7u1) testing; urgency=low
+
+  * Non-maintainer upload.
+  * Backport patch from 0.9.1 to support encrypting the database (Closes:
+    #702905)
+
+ -- Ivo De Decker <ivo.dedec...@ugent.be>  Sun, 24 Mar 2013 15:02:38 +0100
+
 almanah (0.9.0-1) unstable; urgency=low
 
   * debian/watch: Update for .xz
diff -Nru almanah-0.9.0/debian/patches/almanah_encrypt_db_702905.patch 
almanah-0.9.0/debian/patches/almanah_encrypt_db_702905.patch
--- almanah-0.9.0/debian/patches/almanah_encrypt_db_702905.patch        
1970-01-01 01:00:00.000000000 +0100
+++ almanah-0.9.0/debian/patches/almanah_encrypt_db_702905.patch        
2013-03-24 15:04:40.000000000 +0100
@@ -0,0 +1,83 @@
+Description: Enable encryption
+Backport the change from from 0.9.1 to allow encryption of the db.
+
+---
+
+Origin: upstream
+Bug: 702905
+Bug-Debian: http://bugs.debian.org/702905
+Forwarded: not-needed
+
+--- almanah-0.9.0.orig/src/application.c
++++ almanah-0.9.0/src/application.c
+@@ -36,7 +36,7 @@ static void set_property (GObject *objec
+ static void startup (GApplication *application);
+ static void activate (GApplication *application);
+ static gint handle_command_line (GApplication *application, 
GApplicationCommandLine *command_line);
+-static void quit_main_loop (GApplication *application);
++static void window_removed (GtkApplication *application, GtkWindow *window);
+ 
+ struct _AlmanahApplicationPrivate {
+       gboolean debug;
+@@ -59,6 +59,7 @@ almanah_application_class_init (AlmanahA
+ {
+       GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+       GApplicationClass *gapplication_class = G_APPLICATION_CLASS (klass);
++      GtkApplicationClass *gtkapplication_class = GTK_APPLICATION_CLASS 
(klass);
+ 
+       g_type_class_add_private (klass, sizeof (AlmanahApplicationPrivate));
+ 
+@@ -70,7 +71,8 @@ almanah_application_class_init (AlmanahA
+       gapplication_class->startup = startup;
+       gapplication_class->activate = activate;
+       gapplication_class->command_line = handle_command_line;
+-      gapplication_class->quit_mainloop = quit_main_loop;
++
++      gtkapplication_class->window_removed = window_removed;
+ 
+       g_object_class_install_property (gobject_class, PROP_DEBUG,
+                                        g_param_spec_boolean ("debug",
+@@ -293,7 +295,7 @@ handle_command_line (GApplication *appli
+ }
+ 
+ static void
+-storage_manager_disconnected_cb (AlmanahStorageManager *self, const gchar 
*gpgme_error_message, const gchar *warning_message, GApplication *application)
++storage_manager_disconnected_cb (AlmanahStorageManager *self, const gchar 
*gpgme_error_message, const gchar *warning_message, GtkApplication *application)
+ {
+       if (gpgme_error_message != NULL || warning_message != NULL) {
+               GtkWidget *dialog = gtk_message_dialog_new (NULL, 
GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+@@ -310,21 +312,28 @@ storage_manager_disconnected_cb (Almanah
+               gtk_widget_destroy (dialog);
+       }
+ 
+-      /* Chain up to the parent class */
+-      G_APPLICATION_CLASS (almanah_application_parent_class)->quit_mainloop 
(application);
++      /* Allow the end of the applaction */
++      g_application_release (G_APPLICATION (application));
+ }
+ 
+ static void
+-quit_main_loop (GApplication *application)
++window_removed (GtkApplication *application, GtkWindow *window)
+ {
++      /* This would normally result in the end of the application, but we 
need to close the database connection first
++         to prevent an unencrypted database in the filesystem, and we don't 
want a bug like that.
++         So, we append a reference to the application when the user close the 
main window. When the application disconnect
++         from the database, allowing the encryption if necessary, we remove 
this reference with g_application_release.
++         See: https://bugzilla.gnome.org/show_bug.cgi?id=695117 */
++      if (ALMANAH_IS_MAIN_WINDOW (window)) {
+       AlmanahApplicationPrivate *priv = ALMANAH_APPLICATION 
(application)->priv;
+ 
+-      /* This would normally result in gtk_main_quit() being called, but we 
need to close the database connection first. */
++              g_application_hold (G_APPLICATION (application));
++
+       g_signal_connect (priv->storage_manager, "disconnected", (GCallback) 
storage_manager_disconnected_cb, application);
+       almanah_storage_manager_disconnect (priv->storage_manager, NULL);
++      }
+ 
+-      /* Quitting is actually done in storage_manager_disconnected_cb, which 
is called once
+-       * the storage manager has encrypted the DB and disconnected from it. */
++      GTK_APPLICATION_CLASS 
(almanah_application_parent_class)->window_removed (application, window);
+ }
+ 
+ AlmanahApplication *
diff -Nru almanah-0.9.0/debian/patches/series 
almanah-0.9.0/debian/patches/series
--- almanah-0.9.0/debian/patches/series 1970-01-01 01:00:00.000000000 +0100
+++ almanah-0.9.0/debian/patches/series 2013-03-24 13:51:55.000000000 +0100
@@ -0,0 +1 @@
+almanah_encrypt_db_702905.patch

Reply via email to