[xrdp/el6] Update EL5 branch to 0.6.1.

bojan bojan at fedoraproject.org
Wed Dec 10 02:30:41 UTC 2014


commit 43f119f953540669e734784d89b2da3e179d2bb2
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