From 0cc191f8e861ba5b253b3c404f94fb5e8b75684f Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@collabora.com>
Date: Sat, 29 Jun 2019 17:00:02 +0100
Subject: [PATCH] auth: Clear GUID from server if out of memory

If we retry processing the message in response to OOM, but we don't
clear this buffer first, then the assertion at the beginning will fail.

Signed-off-by: Simon McVittie <smcv@collabora.com>
---
 dbus/dbus-auth.c | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/dbus/dbus-auth.c b/dbus/dbus-auth.c
index 9e8b2bc09..62b5b13c7 100644
--- a/dbus/dbus-auth.c
+++ b/dbus/dbus-auth.c
@@ -1664,10 +1664,25 @@ process_ok(DBusAuth *auth,
                  _dbus_string_get_const_data (& DBUS_AUTH_CLIENT (auth)->guid_from_server));
 
   if (auth->unix_fd_possible)
-    return send_negotiate_unix_fd(auth);
+    {
+      if (!send_negotiate_unix_fd (auth))
+        {
+          _dbus_string_set_length (& DBUS_AUTH_CLIENT (auth)->guid_from_server, 0);
+          return FALSE;
+        }
+
+      return TRUE;
+    }
 
   _dbus_verbose("Not negotiating unix fd passing, since not possible\n");
-  return send_begin (auth);
+
+  if (!send_begin (auth))
+    {
+      _dbus_string_set_length (& DBUS_AUTH_CLIENT (auth)->guid_from_server, 0);
+      return FALSE;
+    }
+
+  return TRUE;
 }
 
 static dbus_bool_t
-- 
GitLab