Merge lp:~mterry/lightdm/initialize-more into lp:lightdm

Proposed by Michael Terry
Status: Merged
Merged at revision: 2322
Proposed branch: lp:~mterry/lightdm/initialize-more
Merge into: lp:lightdm
Diff against target: 50 lines (+6/-8)
2 files modified
src/greeter-session.c (+0/-6)
src/unity-system-compositor.c (+6/-2)
To merge this branch: bzr merge lp:~mterry/lightdm/initialize-more
Reviewer Review Type Date Requested Status
Robert Ancell Approve
PS Jenkins bot continuous-integration Pending
Review via email: mp+296836@code.launchpad.net

Commit message

Be more careful about closing uninitialized memory.

Description of the change

Be more careful about closing uninitialized memory.

It caused problems for Josh and me:
- lightdm calls close(0) because of unintialized/zero-initialized memory used as an argument to close()
- pipe() and similar methods are happy to give back fd=0 now
- lightdm may provide USC with --from-dm-fd=0 because it got back 0 from pipe
- USC can't actually write to fd=0 because that's its stdin and isn't inherited like other fds
- USC aborts because it can't open from-dm-fd for writing

Thanks to Josh for finding this fix with me.

To post a comment you must log in.
Revision history for this message
Robert Ancell (robert-ancell) wrote :

Thanks guys!

review: Approve
Revision history for this message
Robert Ancell (robert-ancell) wrote :

I've merged the second half of this patch into the 1.18, 1.16 and 1.10 branches.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/greeter-session.c'
--- src/greeter-session.c 2016-05-19 02:01:57 +0000
+++ src/greeter-session.c 2016-06-08 18:12:45 +0000
@@ -20,10 +20,6 @@
20{20{
21 /* Greeter running inside this session */21 /* Greeter running inside this session */
22 Greeter *greeter;22 Greeter *greeter;
23
24 /* Communication channels to communicate with */
25 int to_greeter_input;
26 int from_greeter_output;
27};23};
2824
29G_DEFINE_TYPE (GreeterSession, greeter_session, SESSION_TYPE);25G_DEFINE_TYPE (GreeterSession, greeter_session, SESSION_TYPE);
@@ -88,8 +84,6 @@
88 GreeterSession *self = GREETER_SESSION (object);84 GreeterSession *self = GREETER_SESSION (object);
8985
90 g_clear_object (&self->priv->greeter);86 g_clear_object (&self->priv->greeter);
91 close (self->priv->to_greeter_input);
92 close (self->priv->from_greeter_output);
9387
94 G_OBJECT_CLASS (greeter_session_parent_class)->finalize (object);88 G_OBJECT_CLASS (greeter_session_parent_class)->finalize (object);
95}89}
9690
=== modified file 'src/unity-system-compositor.c'
--- src/unity-system-compositor.c 2016-05-26 00:36:33 +0000
+++ src/unity-system-compositor.c 2016-06-08 18:12:45 +0000
@@ -435,9 +435,9 @@
435435
436 /* Close compostor ends of the pipes */436 /* Close compostor ends of the pipes */
437 close (compositor->priv->to_compositor_pipe[0]);437 close (compositor->priv->to_compositor_pipe[0]);
438 compositor->priv->to_compositor_pipe[0] = 0;438 compositor->priv->to_compositor_pipe[0] = -1;
439 close (compositor->priv->from_compositor_pipe[1]);439 close (compositor->priv->from_compositor_pipe[1]);
440 compositor->priv->from_compositor_pipe[1] = 0;440 compositor->priv->from_compositor_pipe[1] = -1;
441441
442 if (!result)442 if (!result)
443 return FALSE;443 return FALSE;
@@ -466,6 +466,10 @@
466 compositor->priv->command = g_strdup ("unity-system-compositor");466 compositor->priv->command = g_strdup ("unity-system-compositor");
467 compositor->priv->socket = g_strdup ("/run/mir_socket");467 compositor->priv->socket = g_strdup ("/run/mir_socket");
468 compositor->priv->timeout = -1;468 compositor->priv->timeout = -1;
469 compositor->priv->to_compositor_pipe[0] = -1;
470 compositor->priv->to_compositor_pipe[1] = -1;
471 compositor->priv->from_compositor_pipe[0] = -1;
472 compositor->priv->from_compositor_pipe[1] = -1;
469}473}
470474
471static void475static void

Subscribers

People subscribed via source and target branches