]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
GDBus: Handle fd_list being null
authorRico Tzschichholz <ricotz@ubuntu.com>
Sun, 19 Mar 2017 22:14:10 +0000 (23:14 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 11 Mar 2019 12:52:38 +0000 (13:52 +0100)
codegen/valagdbusclienttransformer.vala
codegen/valagdbusservertransformer.vala

index 2f006cfbec8966bbb52cfc25d48103dcfd78caae..81dec84d8925f539b7cd25ff6318f9bf76b3af15 100644 (file)
@@ -52,6 +52,7 @@ public class Vala.GDBusClientTransformer : GVariantTransformer {
                                fd_index = b.add_temp_declaration (null, expression ("0"));
                                statements (@"$fd_list = $message.get_unix_fd_list ();");
                        }
+                       statements (@"if ($fd_list == null) { throw new GLib.IOError.FAILED (\"FD List is NULL\"); }");
                        statements (@"$iter.next (\"h\", out $fd_index);");
                        if (type_name == "GLib.UnixInputStream") {
                                return expression (@"new GLib.UnixInputStream ($fd_list.get ($fd_index), true)");
index ba03293c8a649de955503b395e89b5760a6a3016..48a68e07ee21805ba63e3b6d2d787d5b736624e9 100644 (file)
@@ -64,6 +64,8 @@ public class Vala.GDBusServerTransformer : GDBusClientTransformer {
                        call = finish_call = (MethodCall) expression (@"object.$(m.name) ()");
                }
 
+               b.open_try ();
+
                var out_args = new string[0];
                var out_types = new DataType[0];
                string fd_list = null;
@@ -102,6 +104,10 @@ public class Vala.GDBusServerTransformer : GDBusClientTransformer {
                        }
                }
 
+               b.add_catch_all ("_invocation_gerror_");
+               statements ("invocation.return_gerror (_invocation_gerror_); return;");
+               b.close ();
+
                if (m.coroutine) {
                        call.add_argument (expression (@"(s, r) => $(ready.name) (s, r, invocation)"));
                        b.add_expression (call);