Imported Upstream version 2.62.2
authorHyunjee Kim <hj0426.kim@samsung.com>
Tue, 3 Dec 2019 02:05:16 +0000 (11:05 +0900)
committerHyunjee Kim <hj0426.kim@samsung.com>
Tue, 3 Dec 2019 02:05:16 +0000 (11:05 +0900)
NEWS
gio/gdbusprivate.c
gio/gunixmounts.c
gio/win32/gwinhttpvfs.c
meson.build

diff --git a/NEWS b/NEWS
index 1420f8b..af14367 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,12 @@
+Overview of changes in GLib 2.62.2
+==================================
+
+* Bugs fixed:
+ - #1896 Use after free when calling g_dbus_connection_flush_sync() in a dedicated thread
+ - !1154 Backport !1152 “gwinhttpvfs: Handle g_get_prgname() returning NULL” to glib-2-62
+ - !1156 Backport !1146 Solaris fixes to glib-2-62
+
+
 Overview of changes in GLib 2.62.1
 ==================================
 
index 0421ca5..302c30b 100644 (file)
@@ -408,6 +408,7 @@ typedef struct
   GMutex  mutex;
   GCond   cond;
   guint64 number_to_wait_for;
+  gboolean finished;
   GError *error;
 } FlushData;
 
@@ -1158,6 +1159,7 @@ flush_data_list_complete (const GList  *flushers,
       f->error = error != NULL ? g_error_copy (error) : NULL;
 
       g_mutex_lock (&f->mutex);
+      f->finished = TRUE;
       g_cond_signal (&f->cond);
       g_mutex_unlock (&f->mutex);
     }
@@ -1787,6 +1789,7 @@ _g_dbus_worker_flush_sync (GDBusWorker    *worker,
       g_mutex_init (&data->mutex);
       g_cond_init (&data->cond);
       data->number_to_wait_for = worker->write_num_messages_written + pending_writes;
+      data->finished = FALSE;
       g_mutex_lock (&data->mutex);
 
       schedule_writing_unlocked (worker, NULL, data, NULL);
@@ -1796,14 +1799,10 @@ _g_dbus_worker_flush_sync (GDBusWorker    *worker,
   if (data != NULL)
     {
       /* Wait for flush operations to finish. */
-      g_mutex_lock (&worker->write_lock);
-      while (worker->write_num_messages_flushed < data->number_to_wait_for)
+      while (!data->finished)
         {
-          g_mutex_unlock (&worker->write_lock);
           g_cond_wait (&data->cond, &data->mutex);
-          g_mutex_lock (&worker->write_lock);
         }
-      g_mutex_unlock (&worker->write_lock);
 
       g_mutex_unlock (&data->mutex);
       g_cond_clear (&data->cond);
index cf73fe5..cbf2ee9 100644 (file)
@@ -165,6 +165,9 @@ static guint64 mount_poller_time = 0;
 #endif
 #elif defined (HAVE_SYS_MNTTAB_H)
 #include <sys/mnttab.h>
+#if defined(__sun) && !defined(mnt_opts)
+#define mnt_opts mnt_mntopts
+#endif
 #endif
 
 #ifdef HAVE_SYS_VFSTAB_H
index 91d7fed..3dfac25 100644 (file)
@@ -121,12 +121,13 @@ static void
 g_winhttp_vfs_init (GWinHttpVfs *vfs)
 {
   wchar_t *wagent;
+  const gchar *prgname = g_get_prgname ();
 
   vfs->wrapped_vfs = g_vfs_get_local ();
 
-  wagent = g_utf8_to_utf16 (g_get_prgname (), -1, NULL, NULL, NULL);
-
-  if (!wagent)
+  if (prgname)
+    wagent = g_utf8_to_utf16 (prgname, -1, NULL, NULL, NULL);
+  else
     wagent = g_utf8_to_utf16 ("GWinHttpVfs", -1, NULL, NULL, NULL);
 
   vfs->session = (G_WINHTTP_VFS_GET_CLASS (vfs)->funcs->pWinHttpOpen)
index d1551bd..83774d0 100644 (file)
@@ -1,5 +1,5 @@
 project('glib', 'c', 'cpp',
-  version : '2.62.1',
+  version : '2.62.2',
   # NOTE: We keep this pinned at 0.49 because that's what Debian 10 ships
   meson_version : '>= 0.49.2',
   default_options : [
@@ -2027,6 +2027,8 @@ elif host_system == 'cygwin'
   export_dynamic_ldflags = ['-Wl,--export-all-symbols']
 elif host_system == 'darwin'
   export_dynamic_ldflags = []
+elif host_system == 'sunos'
+  export_dynamic_ldflags = []
 else
   export_dynamic_ldflags = ['-Wl,--export-dynamic']
 endif