diff options
author | swills <swills@FreeBSD.org> | 2012-09-10 06:20:17 +0800 |
---|---|---|
committer | swills <swills@FreeBSD.org> | 2012-09-10 06:20:17 +0800 |
commit | f01a0d1d85e9d219ebe162a94daa32acea8a0659 (patch) | |
tree | 74e81aa79f7ede60f842e82cc62e863a89836a18 | |
parent | 8854aeaeae9c109d5f033be1e240392425085f3d (diff) | |
download | freebsd-ports-gnome-f01a0d1d85e9d219ebe162a94daa32acea8a0659.tar.gz freebsd-ports-gnome-f01a0d1d85e9d219ebe162a94daa32acea8a0659.tar.zst freebsd-ports-gnome-f01a0d1d85e9d219ebe162a94daa32acea8a0659.zip |
- Fix issue where effective login name is not set
PR: ports/157282
Submitted by: "Iwao, Koichiro" <meta@club.kyutech.ac.jp> (maintainer, old email address)
-rw-r--r-- | net/xrdp/Makefile | 2 | ||||
-rw-r--r-- | net/xrdp/files/patch-sesman__session_1.patch | 85 |
2 files changed, 86 insertions, 1 deletions
diff --git a/net/xrdp/Makefile b/net/xrdp/Makefile index 4ab9eceb3085..0dacc9627c91 100644 --- a/net/xrdp/Makefile +++ b/net/xrdp/Makefile @@ -7,7 +7,7 @@ PORTNAME= xrdp PORTVERSION= 0.6.0.20110117 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= net MASTER_SITES= http://www.club.kyutech.ac.jp/~meta/distfiles/ \ http://key2.jp/~meta/distfiles/ diff --git a/net/xrdp/files/patch-sesman__session_1.patch b/net/xrdp/files/patch-sesman__session_1.patch new file mode 100644 index 000000000000..abdd76be1381 --- /dev/null +++ b/net/xrdp/files/patch-sesman__session_1.patch @@ -0,0 +1,85 @@ +--- sesman/session.c.orig 2011-03-12 16:10:35.000000000 +0900 ++++ sesman/session.c 2011-10-27 12:13:11.000000000 +0900 +@@ -16,7 +16,47 @@ + xrdp: A Remote Desktop Protocol server. + Copyright (C) Jay Sorg 2005-2008 + */ +- ++/* ++ * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland ++ * All rights reserved ++ * ++ * As far as I am concerned, the code I have written for this software ++ * can be used freely for any purpose. Any derived versions of this ++ * software must be clearly marked as such, and if the derived work is ++ * incompatible with the protocol description in the RFC file, it must be ++ * called by a name other than "ssh" or "Secure Shell". ++ * ++ * SSH2 support by Markus Friedl. ++ * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ * ++ * Copyright (c) 2011 Iwao, Koichiro <meta@club.kyutech.ac.jp>, ++ * Kyushu Institute of Technology. ++ * All rights reserved. ++ * ++ * from: OpenBSD: session.c,v 1.252 2010/03/07 11:57:13 dtucker Exp ++ * with some ideas about process grouping from OpenSSH to xrdp ++ * ++ */ + /** + * + * @file session.c +@@ -373,6 +413,33 @@ + g_sprintf(geometry, "%dx%d", width, height); + g_sprintf(depth, "%d", bpp); + g_sprintf(screen, ":%d", display); ++#ifdef __FreeBSD__ ++ /* ++ * Create a new session and process group since 4.4BSD ++ * setlogin affects the entire process group. ++ */ ++ pid_t bsdsespid = g_fork(); ++ ++ if (bsdsespid == -1) ++ { ++ } ++ else if (bsdsespid == 0) /* BSD session leader */ ++ { ++ if (setsid() < 0) ++ { ++ log_message(&(g_cfg->log), LOG_LEVEL_ERROR, ++ "setsid failed: %.100s", strerror(errno)); ++ } ++ ++ if (setlogin(username) < 0) ++ { ++ log_message(&(g_cfg->log), LOG_LEVEL_ERROR, ++ "setlogin failed: %.100s", strerror(errno)); ++ } ++ } ++ ++ g_waitpid(bsdsespid); ++#endif + wmpid = g_fork(); + if (wmpid == -1) + { |