[xrdp/el5] Update EL5 branch to 0.6.1.
bojan
bojan at fedoraproject.org
Wed Dec 10 02:11:13 UTC 2014
commit 9fbb1c3482e91dbb961952cc13a173ed3744de46
Author: Bojan Smojver <bojan at rexursive.com>
Date: Wed Dec 10 13:11:10 2014 +1100
Update EL5 branch to 0.6.1.
sources | 2 +-
xrdp-0.5.0-version.patch | 24 ----
xrdp-0.6.1-implicit-decl.patch | 22 ++++
xrdp-0.6.1-memset.patch | 16 +++
xrdp-0.6.1-syslog-format.patch | 12 ++
xrdp-endian.patch | 17 +++
xrdp-pam_session.patch | 229 ++++++++++++++++++++++++++++++++++++++++
xrdp.spec | 27 ++++-
8 files changed, 318 insertions(+), 31 deletions(-)
---
diff --git a/sources b/sources
index 465fc72..e2f4711 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-a426071a522793eddf94c4bf80ca90dc xrdp-HEAD-a9cfc23.tar.gz
+26099c6588943262023607c1b4e774d8 xrdp-v0.6.1.tar.gz
diff --git a/xrdp-0.6.1-implicit-decl.patch b/xrdp-0.6.1-implicit-decl.patch
new file mode 100644
index 0000000..a13b9d6
--- /dev/null
+++ b/xrdp-0.6.1-implicit-decl.patch
@@ -0,0 +1,22 @@
+diff -ruN xrdp-v0.6.1-orig/sesman/chansrv/clipboard.c xrdp-v0.6.1/sesman/chansrv/clipboard.c
+--- xrdp-v0.6.1-orig/sesman/chansrv/clipboard.c 2013-11-10 07:11:15.000000000 +1100
++++ xrdp-v0.6.1/sesman/chansrv/clipboard.c 2014-04-01 19:12:32.513364604 +1100
+@@ -29,6 +29,7 @@
+ #include "parse.h"
+ #include "os_calls.h"
+ #include "chansrv.h"
++#include "clipboard.h"
+
+ static Atom g_clipboard_atom = 0;
+ static Atom g_clip_property_atom = 0;
+diff -ruN xrdp-v0.6.1-orig/xrdp/xrdp_mm.c xrdp-v0.6.1/xrdp/xrdp_mm.c
+--- xrdp-v0.6.1-orig/xrdp/xrdp_mm.c 2013-11-10 07:11:15.000000000 +1100
++++ xrdp-v0.6.1/xrdp/xrdp_mm.c 2014-04-01 19:11:19.743442077 +1100
+@@ -21,6 +21,7 @@
+ */
+
+ #include "xrdp.h"
++#include <string.h>
+
+ /*****************************************************************************/
+ struct xrdp_mm* APP_CC
diff --git a/xrdp-0.6.1-memset.patch b/xrdp-0.6.1-memset.patch
new file mode 100644
index 0000000..d7cf72e
--- /dev/null
+++ b/xrdp-0.6.1-memset.patch
@@ -0,0 +1,16 @@
+diff -ruN xrdp-v0.6.1-orig/common/os_calls.c xrdp-v0.6.1/common/os_calls.c
+--- xrdp-v0.6.1-orig/common/os_calls.c 2013-11-10 07:11:15.000000000 +1100
++++ xrdp-v0.6.1/common/os_calls.c 2014-04-01 18:29:15.585633769 +1100
+@@ -567,10 +567,10 @@
+ {
+ struct sockaddr_in s;
+ struct in_addr in;
+- int len;
++ socklen_t len;
+ int ip_port;
+
+- memset(&s,0,sizeof(&s));
++ memset(&s,0,sizeof(s));
+ len = sizeof(s);
+ getpeername(rcv_sck,(struct sockaddr*)&s, &len);
+
diff --git a/xrdp-0.6.1-syslog-format.patch b/xrdp-0.6.1-syslog-format.patch
new file mode 100644
index 0000000..8da4bb1
--- /dev/null
+++ b/xrdp-0.6.1-syslog-format.patch
@@ -0,0 +1,12 @@
+diff -ruN xrdp-v0.6.1-orig/common/log.c xrdp-v0.6.1/common/log.c
+--- xrdp-v0.6.1-orig/common/log.c 2013-11-10 07:11:15.000000000 +1100
++++ xrdp-v0.6.1/common/log.c 2014-04-01 17:54:49.005574821 +1100
+@@ -160,7 +160,7 @@
+ if (l_cfg->enable_syslog && (lvl <= l_cfg->log_level))
+ {
+ /* log to syslog */
+- syslog(log_xrdp2syslog(lvl), buff + 20);
++ syslog(log_xrdp2syslog(lvl), "%s", buff + 20);
+ }
+
+ if (lvl <= l_cfg->log_level)
diff --git a/xrdp-endian.patch b/xrdp-endian.patch
new file mode 100644
index 0000000..d825dd7
--- /dev/null
+++ b/xrdp-endian.patch
@@ -0,0 +1,17 @@
+diff -up xrdp-HEAD-a9cfc23/common/arch.h.endian xrdp-HEAD-a9cfc23/common/arch.h
+--- xrdp-HEAD-a9cfc23/common/arch.h.endian 2010-11-04 16:52:27.000000000 +0100
++++ xrdp-HEAD-a9cfc23/common/arch.h 2013-01-29 12:31:13.000000000 +0100
+@@ -24,10 +24,12 @@
+ #if !defined(ARCH_H)
+ #define ARCH_H
+
++#include <endian.h>
++
+ #if !(defined(L_ENDIAN) || defined(B_ENDIAN))
+ /* check endianess */
+ #if defined(__sparc__) || defined(__PPC__) || defined(__ppc__) || \
+- defined(__hppa__)
++ defined(__hppa__) || (BYTE_ORDER == BIG_ENDIAN)
+ #define B_ENDIAN
+ #else
+ #define L_ENDIAN
diff --git a/xrdp-pam_session.patch b/xrdp-pam_session.patch
new file mode 100644
index 0000000..cc4fcb9
--- /dev/null
+++ b/xrdp-pam_session.patch
@@ -0,0 +1,229 @@
+diff --git a/sesman/auth.h b/sesman/auth.h
+index a6c5e7f..86bfc96 100644
+--- a/sesman/auth.h
++++ b/sesman/auth.h
+@@ -58,6 +58,16 @@ auth_start_session(long in_val, int in_display);
+ *
+ */
+ int DEFAULT_CC
++auth_stop_session(long in_val);
++
++/**
++ *
++ * @brief FIXME
++ * @param in_val
++ * @return 0 on success, 1 on failure
++ *
++ */
++int DEFAULT_CC
+ auth_end(long in_val);
+
+ /**
+diff --git a/sesman/session.c b/sesman/session.c
+index 36262ad..24e40d1 100644
+--- a/sesman/session.c
++++ b/sesman/session.c
+@@ -310,7 +310,7 @@ session_start_fork(int width, int height, int bpp, char* username,
+ {
+ int display = 0;
+ int pid = 0;
+- int wmpid = 0;
++ int wmpid = 0, pampid = 0;
+ int xpid = 0;
+ int i = 0;
+ char geometry[32];
+@@ -369,7 +369,6 @@ session_start_fork(int width, int height, int bpp, char* username,
+ }
+ else if (pid == 0) /* child sesman */
+ {
+- auth_start_session(data, display);
+ g_sprintf(geometry, "%dx%d", width, height);
+ g_sprintf(depth, "%d", bpp);
+ g_sprintf(screen, ":%d", display);
+@@ -380,80 +379,94 @@ session_start_fork(int width, int height, int bpp, char* username,
+ else if (wmpid == 0) /* child (child sesman) xserver */
+ {
+ wait_for_xserver(display);
+- env_set_user(username, 0, display);
+- if (x_server_running(display))
++ auth_start_session(data, display);
++ pampid = g_fork();
++ if(pampid == -1)
+ {
+- auth_set_env(data);
+- if (directory != 0)
++ }
++ else if (pampid == 0) /* child: X11/client */
++ {
++ env_set_user(username, 0, display);
++ if (x_server_running(display))
+ {
+- if (directory[0] != 0)
++ auth_set_env(data);
++ if (directory != 0)
+ {
+- g_set_current_dir(directory);
++ if (directory[0] != 0)
++ {
++ g_set_current_dir(directory);
++ }
+ }
+- }
+- if (program != 0)
+- {
+- if (program[0] != 0)
++ if (program != 0)
+ {
+- g_execlp3(program, program, 0);
+- log_message(&(g_cfg->log), LOG_LEVEL_ALWAYS,
+- "error starting program %s for user %s - pid %d",
+- program, username, g_getpid());
++ if (program[0] != 0)
++ {
++ g_execlp3(program, program, 0);
++ log_message(&(g_cfg->log), LOG_LEVEL_ALWAYS,
++ "error starting program %s for user %s - pid %d",
++ program, username, g_getpid());
++ }
+ }
+- }
+- /* try to execute user window manager if enabled */
+- if (g_cfg->enable_user_wm)
+- {
+- g_sprintf(text,"%s/%s", g_getenv("HOME"), g_cfg->user_wm);
+- if (g_file_exist(text))
++ /* try to execute user window manager if enabled */
++ if (g_cfg->enable_user_wm)
+ {
+- g_execlp3(text, g_cfg->user_wm, 0);
+- log_message(&(g_cfg->log), LOG_LEVEL_ALWAYS,"error starting user "
+- "wm for user %s - pid %d", username, g_getpid());
+- /* logging parameters */
+- log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, "errno: %d, "
+- "description: %s", errno, g_get_strerror());
+- log_message(&(g_cfg->log), LOG_LEVEL_DEBUG,"execlp3 parameter "
+- "list:");
+- log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, " argv[0] = %s",
+- text);
+- log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, " argv[1] = %s",
+- g_cfg->user_wm);
++ g_sprintf(text,"%s/%s", g_getenv("HOME"), g_cfg->user_wm);
++ if (g_file_exist(text))
++ {
++ g_execlp3(text, g_cfg->user_wm, 0);
++ log_message(&(g_cfg->log), LOG_LEVEL_ALWAYS,"error starting user "
++ "wm for user %s - pid %d", username, g_getpid());
++ /* logging parameters */
++ log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, "errno: %d, "
++ "description: %s", errno, g_get_strerror());
++ log_message(&(g_cfg->log), LOG_LEVEL_DEBUG,"execlp3 parameter "
++ "list:");
++ log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, " argv[0] = %s",
++ text);
++ log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, " argv[1] = %s",
++ g_cfg->user_wm);
++ }
+ }
++ /* if we're here something happened to g_execlp3
++ so we try running the default window manager */
++ g_sprintf(text, "%s/%s", XRDP_CFG_PATH, g_cfg->default_wm);
++ g_execlp3(text, g_cfg->default_wm, 0);
++
++ log_message(&(g_cfg->log), LOG_LEVEL_ALWAYS,"error starting default "
++ "wm for user %s - pid %d", username, g_getpid());
++ /* logging parameters */
++ log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, "errno: %d, description: "
++ "%s", errno, g_get_strerror());
++ log_message(&(g_cfg->log), LOG_LEVEL_DEBUG,"execlp3 parameter list:");
++ log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, " argv[0] = %s",
++ text);
++ log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, " argv[1] = %s",
++ g_cfg->default_wm);
++
++ /* still a problem starting window manager just start xterm */
++ g_execlp3("xterm", "xterm", 0);
++
++ /* should not get here */
++ log_message(&(g_cfg->log), LOG_LEVEL_ALWAYS,"error starting xterm "
++ "for user %s - pid %d", username, g_getpid());
++ /* logging parameters */
++ log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, "errno: %d, description: "
++ "%s", errno, g_get_strerror());
+ }
+- /* if we're here something happened to g_execlp3
+- so we try running the default window manager */
+- g_sprintf(text, "%s/%s", XRDP_CFG_PATH, g_cfg->default_wm);
+- g_execlp3(text, g_cfg->default_wm, 0);
+-
+- log_message(&(g_cfg->log), LOG_LEVEL_ALWAYS,"error starting default "
+- "wm for user %s - pid %d", username, g_getpid());
+- /* logging parameters */
+- log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, "errno: %d, description: "
+- "%s", errno, g_get_strerror());
+- log_message(&(g_cfg->log), LOG_LEVEL_DEBUG,"execlp3 parameter list:");
+- log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, " argv[0] = %s",
+- text);
+- log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, " argv[1] = %s",
+- g_cfg->default_wm);
+-
+- /* still a problem starting window manager just start xterm */
+- g_execlp3("xterm", "xterm", 0);
+-
+- /* should not get here */
+- log_message(&(g_cfg->log), LOG_LEVEL_ALWAYS,"error starting xterm "
+- "for user %s - pid %d", username, g_getpid());
+- /* logging parameters */
+- log_message(&(g_cfg->log), LOG_LEVEL_DEBUG, "errno: %d, description: "
+- "%s", errno, g_get_strerror());
++ else
++ {
++ log_message(&(g_cfg->log), LOG_LEVEL_ERROR, "another Xserver is "
++ "already active on display %d", display);
++ }
++ log_message(&(g_cfg->log), LOG_LEVEL_DEBUG,"aborting connection...");
++ g_exit(0);
+ }
+ else
+ {
+- log_message(&(g_cfg->log), LOG_LEVEL_ERROR, "another Xserver is "
+- "already active on display %d", display);
++ g_waitpid(pampid);
++ auth_stop_session(data);
++ g_exit(0);
+ }
+- log_message(&(g_cfg->log), LOG_LEVEL_DEBUG,"aborting connection...");
+- g_exit(0);
+ }
+ else /* parent (child sesman) */
+ {
+diff --git a/sesman/verify_user_pam.c b/sesman/verify_user_pam.c
+index e3d8596..54aaeaa 100644
+--- a/sesman/verify_user_pam.c
++++ b/sesman/verify_user_pam.c
+@@ -173,6 +173,26 @@ auth_start_session(long in_val, int in_display)
+
+ /******************************************************************************/
+ /* returns error */
++int DEFAULT_CC
++auth_stop_session(long in_val)
++{
++ struct t_auth_info* auth_info;
++ int error;
++
++ auth_info = (struct t_auth_info*)in_val;
++ error = pam_close_session(auth_info->ph, 0);
++ if (error != PAM_SUCCESS)
++ {
++ g_printf("pam_close_session failed: %s\r\n",
++ pam_strerror(auth_info->ph, error));
++ return 1;
++ }
++ auth_info->session_opened = 0;
++ return 0;
++}
++
++/******************************************************************************/
++/* returns error */
+ /* cleanup */
+ int DEFAULT_CC
+ auth_end(long in_val)
diff --git a/xrdp.spec b/xrdp.spec
index 0fb13e2..4c8e9b9 100644
--- a/xrdp.spec
+++ b/xrdp.spec
@@ -2,17 +2,21 @@
Summary: Open source remote desktop protocol (RDP) server
Name: xrdp
-Version: 0.5.0
-Release: 0.13%{?dist}
+Version: 0.6.1
+Release: 1%{?dist}
License: GPLv2+ with exceptions
Group: Applications/Internet
URL: http://xrdp.sourceforge.net/
-Source0: http://server1.xrdp.org/xrdp/xrdp-HEAD-a9cfc23.tar.gz
+Source0: http://sourceforge.net/projects/xrdp/files/xrdp/%{version}/xrdp-v%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Patch0: xrdp-pam-auth.patch
Patch1: xrdp-use-xinitrc-in-startm-sh.patch
-Patch2: xrdp-0.5.0-version.patch
+Patch2: xrdp-pam_session.patch
+Patch3: xrdp-endian.patch
+Patch4: xrdp-0.6.1-syslog-format.patch
+Patch5: xrdp-0.6.1-memset.patch
+Patch6: xrdp-0.6.1-implicit-decl.patch
Source1: xrdp.init
Source2: xrdp.sysconfig
@@ -44,10 +48,14 @@ server, capable of accepting connections from rdesktop and Microsoft's own
terminal server / remote desktop clients.
%prep
-%setup -q -n xrdp-HEAD-a9cfc23
+%setup -q -n %{name}-v%{version}
%patch0 -p2
%patch1 -p2
-%patch2 -p2
+%patch2 -p1
+%patch3 -p1 -b .endian
+%patch4 -p1 -b .syslog-format
+%patch5 -p1 -b .memset
+%patch6 -p1 -b .implicit-decl
# remove unused modules from xrdp login combobox
@@ -140,6 +148,7 @@ rm -rf %{buildroot}
%{_bindir}/xrdp-keygen
%{_bindir}/xrdp-sesrun
%{_bindir}/xrdp-sestest
+%{_bindir}/xrdp-dis
%{_sbindir}/xrdp-chansrv
%{_sbindir}/xrdp
%{_sbindir}/xrdp-sesman
@@ -165,6 +174,12 @@ rm -rf %{buildroot}
%attr(0600,root,root) %verify(not size md5 mtime) %{_sysconfdir}/xrdp/rsakeys.ini
%changelog
+* Wed Dec 10 2014 Bojan Smojver <bojan at rexursive.com> - 0.6.1-1
+- try a bump to official 0.6.1
+- provide format for syslog() call
+- fix memset() call
+- fix implicit declarations
+
* Thu Nov 18 2010 Itamar Reis Peixoto <itamar at ispbrasil.com.br> - 0.5.0-0.13
- up to git tag a9cfc235211a49c69c3cce3f98ee5976ff8103a4
More information about the scm-commits
mailing list