WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] Make sure to fork again after setsid() so that child can

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Make sure to fork again after setsid() so that child cannot regain CTTY.
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 13 Dec 2005 13:50:07 +0000
Delivery-date: Tue, 13 Dec 2005 13:51:40 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Anthony Liguori <anthony@xxxxxxxxxxxxx>
# Node ID c8378d3c3af835a4626c07b9850a4fc19361fec8
# Parent  b4dfb49332d2935860ee8ddeebdfffcaef5e800b
Make sure to fork again after setsid() so that child cannot regain CTTY.

Signed-off-by: Anthony Liguori <aliguori@xxxxxxxxxx>

diff -r b4dfb49332d2 -r c8378d3c3af8 tools/console/daemon/utils.c
--- a/tools/console/daemon/utils.c      Mon Dec 12 11:15:29 2005
+++ b/tools/console/daemon/utils.c      Mon Dec 12 15:11:13 2005
@@ -90,6 +90,12 @@
 
        setsid();
 
+       if ((pid = fork()) > 0) {
+               exit(0);
+       } else if (pid == -1) {
+               err(errno, "fork() failed");
+       }
+
        /* redirect fd 0,1,2 to /dev/null */
        if ((fd = open("/dev/null",O_RDWR)) == -1) {
                exit(1);
diff -r b4dfb49332d2 -r c8378d3c3af8 tools/xenstore/xenstored_core.c
--- a/tools/xenstore/xenstored_core.c   Mon Dec 12 11:15:29 2005
+++ b/tools/xenstore/xenstored_core.c   Mon Dec 12 15:11:13 2005
@@ -1491,6 +1491,13 @@
 
        /* Session leader so ^C doesn't whack us. */
        setsid();
+
+       /* Let session leader exit so child cannot regain CTTY */
+       if ((pid = fork()) < 0)
+               barf_perror("Failed to fork daemon");
+       if (pid != 0)
+               exit(0);
+
 #ifndef TESTING        /* Relative paths for socket names */
        /* Move off any mount points we might be in. */
        chdir("/");

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Make sure to fork again after setsid() so that child cannot regain CTTY., Xen patchbot -unstable <=