Branch: ulab-next

356459f9 2019-03-04 11:22:24 Guan-Zhong Huang
Fix incorrect usage of log_message()
M sesman/verify_user.c

sesman/verify_user.c

diff --git a/sesman/verify_user.c b/sesman/verify_user.c
index 5bd89c7..81ddc0a 100644
--- a/sesman/verify_user.c
+++ b/sesman/verify_user.c
@@ -76,7 +76,7 @@
 
         if (1 == auth_account_disabled(stp))
         {
-            log_message(&(g_cfg->log), LOG_LEVEL_INFO, "account %s is disabled", user);
+            log_message(LOG_LEVEL_INFO, "account %s is disabled", user);
             return 0;
         }
 
b7bc311a 2019-03-04 11:22:24 Guan-Zhong Huang
Fix compilation error without PAM
M configure.ac
M xrdp/Makefile.am
M xrdp/xrdp_mm.c

configure.ac

diff --git a/configure.ac b/configure.ac
index 6dd4052..d431513 100644
--- a/configure.ac
+++ b/configure.ac
@@ -69,6 +69,11 @@
   fi
 fi
 
+if test "x$enable_nopam" = "xyes"
+then
+  AC_DEFINE([USE_NOPAM],1,[Disable PAM])
+fi
+
 AS_IF( [test "x$enable_freerdp1" = "xyes"] , [PKG_CHECK_MODULES(FREERDP, freerdp >= 1.0.0)] )
 
 # checking for libjpeg

xrdp/Makefile.am

diff --git a/xrdp/Makefile.am b/xrdp/Makefile.am
index b755bbe..25ab3ee 100644
--- a/xrdp/Makefile.am
+++ b/xrdp/Makefile.am
@@ -14,6 +14,7 @@
   $(EXTRA_DEFINES)
 
 INCLUDES = \
+  -I$(top_builddir) \
   -I$(top_srcdir)/common \
   -I$(top_srcdir)/libxrdp
 

xrdp/xrdp_mm.c

diff --git a/xrdp/xrdp_mm.c b/xrdp/xrdp_mm.c
index 1f5acaa..008f191 100644
--- a/xrdp/xrdp_mm.c
+++ b/xrdp/xrdp_mm.c
@@ -17,11 +17,14 @@
  *
  * module manager
  */
+#include <config_ac.h>
 #define ACCESS
 #include "xrdp.h"
 #include "log.h"
 #ifdef ACCESS
+#ifndef USE_NOPAM
 #include "security/_pam_types.h"
+#endif
 #endif
 
 /*****************************************************************************/
@@ -1071,6 +1074,7 @@
 }
 
 #ifdef ACCESS
+#ifndef USE_NOPAM
 /*********************************************************************/
 /* return 0 on success */
 int access_control(char *username, char *password, char *srv)
@@ -1183,6 +1187,7 @@
     return rec;
 }
 #endif
+#endif
 
 /*****************************************************************************/
 /* This routine clears all states to make sure that our next login will be
@@ -1206,6 +1211,7 @@
     }
 }
 #ifdef ACCESS
+#ifndef USE_NOPAM
 const char *getPAMError(const int pamError)
 {      
     switch(pamError){
@@ -1333,6 +1339,7 @@
     
 }
 #endif
+#endif
 /*****************************************************************************/
 int APP_CC
 xrdp_mm_connect(struct xrdp_mm *self)
@@ -1351,10 +1358,12 @@
     char port[8];
     char chansrvport[256];
 #ifdef ACCESS
+#ifndef USE_NOPAM
     int use_pam_auth = 0;
     char pam_auth_sessionIP[256];
     char pam_auth_password[256];
     char pam_auth_username[256];
+#endif
     char username[256];
     char password[256];
     username[0] = 0;
@@ -1390,6 +1399,7 @@
         }
 
 #ifdef ACCESS
+#ifndef USE_NOPAM
         else if (g_strcasecmp(name, "pamusername") == 0)
         {
             use_pam_auth = 1;
@@ -1403,6 +1413,7 @@
         {
             g_strncpy(pam_auth_password, value, 255);
         }
+#endif
         else if (g_strcasecmp(name, "password") == 0)
         {
             g_strncpy(password, value, 255);
@@ -1421,7 +1432,7 @@
     }
 
 #ifdef ACCESS
-
+#ifndef USE_NOPAM
     if (use_pam_auth)
     {
         int reply;
@@ -1464,7 +1475,7 @@
             return rv;
         }
     }
-
+#endif
 #endif
 
     if (self->sesman_controlled)
a4bcb672 2019-03-04 11:22:24 Guan-Zhong Huang
Fix password authentication to handle different encryption algorithms
M sesman/verify_user.c

sesman/verify_user.c

diff --git a/sesman/verify_user.c b/sesman/verify_user.c
index 81ddc0a..85e614d 100644
--- a/sesman/verify_user.c
+++ b/sesman/verify_user.c
@@ -50,12 +50,9 @@
 long DEFAULT_CC
 auth_userpass(char *user, char *pass, int *errorcode)
 {
-    char salt[13] = "$1$";
-    char hash[35] = "";
-    char *encr = 0;
+    const char *encr;
     struct passwd *spw;
     struct spwd *stp;
-    int saltcnt = 0;
 
     spw = getpwnam(user);
 
@@ -80,46 +77,15 @@
             return 0;
         }
 
-        g_strncpy(hash, stp->sp_pwdp, 34);
+        encr = stp->sp_pwdp;
     }
     else
     {
         /* old system with only passwd */
-        g_strncpy(hash, spw->pw_passwd, 34);
+        encr = spw->pw_passwd;
     }
 
-    hash[34] = '\0';
-
-    if (g_strncmp(hash, "$1$", 3) == 0)
-    {
-        /* gnu style crypt(); */
-        saltcnt = 3;
-
-        while ((hash[saltcnt] != '$') && (saltcnt < 11))
-        {
-            salt[saltcnt] = hash[saltcnt];
-            saltcnt++;
-        }
-
-        salt[saltcnt] = '$';
-        salt[saltcnt + 1] = '\0';
-    }
-    else
-    {
-        /* classic two char salt */
-        salt[0] = hash[0];
-        salt[1] = hash[1];
-        salt[2] = '\0';
-    }
-
-    encr = crypt(pass, salt);
-
-    if (g_strncmp(encr, hash, 34) != 0)
-    {
-        return 0;
-    }
-
-    return 1;
+    return (strcmp(encr, crypt(pass, encr)) == 0);
 }
 
 /******************************************************************************/
cb1974a6 2019-03-04 11:22:24 Jay Sorg
chansrv: fix for building without fuse
M sesman/chansrv/chansrv_fuse.c

sesman/chansrv/chansrv_fuse.c

diff --git a/sesman/chansrv/chansrv_fuse.c b/sesman/chansrv/chansrv_fuse.c
index 9b16c9a..27ce757 100644
--- a/sesman/chansrv/chansrv_fuse.c
+++ b/sesman/chansrv/chansrv_fuse.c
@@ -52,7 +52,12 @@
 **                                                                           **
 ******************************************************************************/
 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
 #include "arch.h"
+#include "chansrv_fuse.h"
 
 /* dummy calls when XRDP_FUSE is not defined */
 int xfuse_init()                {}
@@ -63,6 +68,12 @@
 int xfuse_file_contents_range(int stream_id, char *data, int data_bytes)     {}
 int xfuse_file_contents_size(int stream_id, int file_size)                   {}
 int xfuse_add_clip_dir_item(char *filename, int flags, int size, int lindex) {}
+int xfuse_create_share(tui32 device_id, char *dirname)                       {}
+void xfuse_devredir_cb_open_file(void *vp, tui32 DeviceId, tui32 FileId)     {}
+void xfuse_devredir_cb_write_file(void *vp, char *buf, size_t length)        {}
+void xfuse_devredir_cb_read_file(void *vp, char *buf, size_t length)         {}
+void xfuse_devredir_cb_enum_dir(void *vp, struct xrdp_inode *xinode)         {}
+void xfuse_devredir_cb_enum_dir_done(void *vp, tui32 IoStatus)               {}
 
 #else
 
effebb42 2019-03-04 11:22:24 Jay Sorg
xrdp: xrdp_mm.c fix some warnings and code cleanup
M xrdp/xrdp_mm.c

xrdp/xrdp_mm.c

diff --git a/xrdp/xrdp_mm.c b/xrdp/xrdp_mm.c
index 008f191..6c01c85 100644
--- a/xrdp/xrdp_mm.c
+++ b/xrdp/xrdp_mm.c
@@ -825,7 +825,7 @@
     if (!(self->chan_trans_up))
     {
         log_message(LOG_LEVEL_ERROR,"xrdp_mm_connect_chansrv: error in"
-		"trans_connect chan");
+                    "trans_connect chan");
     }
 
     if (self->chan_trans_up)
** Diff limit reached (max: 250 lines) **
93130656 2019-03-04 11:22:24 Jay Sorg
chansrv: add header
M sesman/chansrv/devredir.h
** Diff limit reached (max: 250 lines) **
897ddec0 2019-03-04 11:22:24 Jay Sorg
libxrdp: started adding new(color) cursor support
M common/xrdp_client_info.h
M libxrdp/xrdp_rdp.c
** Diff limit reached (max: 250 lines) **
c4a50768 2019-03-04 11:22:24 Jay Sorg
work on new(color) cursors
M common/xrdp_constants.h
M libxrdp/libxrdp.c
M libxrdp/libxrdpinc.h
M xrdp/xrdp.h
M xrdp/xrdp_cache.c
M xrdp/xrdp_types.h
M xrdp/xrdp_wm.c
** Diff limit reached (max: 250 lines) **
918cac31 2019-03-04 11:22:24 Jay Sorg
work on new(color) cursors
M libxrdp/libxrdp.c
** Diff limit reached (max: 250 lines) **
3867fc8e 2019-03-04 11:22:24 Jay Sorg
X11rdp: build fix from kyytaM
M xorg/X11R7.6/buildx.sh
** Diff limit reached (max: 250 lines) **
cea9f8b0 2019-03-04 11:22:24 Laxmikant Rashinkar
o added some dummy functions to stop build from breaking
  when --enable-fuse is not specified
M sesman/chansrv/chansrv_fuse.c
** Diff limit reached (max: 250 lines) **
34b18170 2019-03-04 11:22:24 Laxmikant Rashinkar
o in file system redirection, added support for renaming files and directories
M sesman/chansrv/chansrv_fuse.c
M sesman/chansrv/chansrv_fuse.h
M sesman/chansrv/devredir.c
M sesman/chansrv/devredir.h
** Diff limit reached (max: 250 lines) **
d41e6dbe 2019-03-04 11:22:24 Jay Sorg
work on new(color) cursors
M xorg/X11R7.6/rdp/rdp.h
M xorg/X11R7.6/rdp/rdpinput.c
M xorg/X11R7.6/rdp/rdpup.c
M xrdp/xrdp.h
M xrdp/xrdp_mm.c
M xrdp/xrdp_types.h
M xrdp/xrdp_wm.c
M xup/xup.c
M xup/xup.h
** Diff limit reached (max: 250 lines) **
ffcf3660 2019-03-04 11:22:24 Jay Sorg
new(color) cursors working now
M xorg/X11R7.6/rdp/rdpinput.c
M xrdp/xrdp_cache.c
** Diff limit reached (max: 250 lines) **
8a95f950 2019-03-04 11:22:24 Jay Sorg
sync client_info struct with A8
M common/xrdp_client_info.h
M libxrdp/xrdp_rdp.c
** Diff limit reached (max: 250 lines) **
03d8c134 2019-03-04 11:22:24 Bart Warmerdam
Use correct RGB byte odering for uncompressed bitmaps (ms-rdpbcgr p192), RED=lsB, BLUE=msB
M libxrdp/xrdp_orders.c
** Diff limit reached (max: 250 lines) **
71390a39 2019-03-04 11:22:24 Bart Warmerdam
Revert "Use correct RGB byte odering for uncompressed bitmaps (ms-rdpbcgr p192), RED=lsB, BLUE=msB"

This reverts commit 4efe900f2d3ba4a2a3d60d2b68b1a90b739b9c2d.
M libxrdp/xrdp_orders.c
** Diff limit reached (max: 250 lines) **
e1eff4d4 2019-03-04 11:22:24 Bart Warmerdam
Use correct RGB byte odering for uncompressed bitmaps (ms-rdpbcgr p192), RED=lsB, BLUE=msB
M libxrdp/xrdp_orders.c
** Diff limit reached (max: 250 lines) **
d12e9a08 2019-03-04 11:22:24 Timothy Pearson
Minor modifications for Debian
A debian_configure
M sesman/startwm.sh
** Diff limit reached (max: 250 lines) **
84838092 2019-03-04 11:22:24 Timothy Pearson
Fix xrdp script on Debian
M instfiles/xrdp.sh
** Diff limit reached (max: 250 lines) **
3d616138 2019-03-04 11:22:24 Timothy Pearson
Add preliminary Raptor session management
A raptorsmiface/Makefile.am
A raptorsmiface/libraptorsmiface.c
A raptorsmiface/libraptorsmiface.h
M Makefile.am
M configure.ac
M sesman/Makefile.am
M sesman/chansrv/Makefile.am
M sesman/chansrv/chansrv.c
M sesman/sesman.ini
M sesman/session.c
M xrdp/Makefile.am
M xrdp/xrdp.ini
M xrdp/xrdp_mm.c
M xrdp/xrdp_types.h
** Diff limit reached (max: 250 lines) **
f590f854 2019-03-04 11:22:24 Timothy Pearson
Fix a number of problems
System is now mostly stabilized
M common/defines.h
M common/trans.c
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
M sesman/chansrv/chansrv.c
M sesman/scp_v0.c
M sesman/scp_v1.c
M sesman/session.c
M xrdp/xrdp_mm.c
M xup/xup.c
** Diff limit reached (max: 250 lines) **
4954b6f2 2019-03-04 11:22:24 Timothy Pearson
Add server/group mapping
M raptorsmiface/libraptorsmiface.c
M xrdp/xrdp_mm.c
** Diff limit reached (max: 250 lines) **
3c4ef7ee 2019-03-04 11:22:24 Timothy Pearson
Partially fix immediate exit after login
M xup/xup.c
** Diff limit reached (max: 250 lines) **
8dc53629 2019-03-04 11:22:24 Timothy Pearson
Add hack to support blank cursors for now
M xorg/X11R7.6/rdp/rdpinput.c
M xup/xup.c
** Diff limit reached (max: 250 lines) **
e7f2ded7 2019-03-04 11:22:24 Timothy Pearson
Update branding
M xrdp/ad24b.bmp
M xrdp/ad256.bmp
M xrdp/xrdp.ini
M xrdp/xrdp24b.bmp
M xrdp/xrdp256.bmp
M xrdp/xrdp_login_wnd.c
** Diff limit reached (max: 250 lines) **
b3392a3b 2019-03-04 11:22:24 Timothy Pearson
Use a black login background
M xrdp/xrdp.ini
M xrdp/xrdp24b.bmp
M xrdp/xrdp256.bmp
** Diff limit reached (max: 250 lines) **
9fba9869 2019-03-04 11:22:24 Timothy Pearson
Add ability to recover somewhat from a dead master node
M raptorsmiface/libraptorsmiface.c
** Diff limit reached (max: 250 lines) **
38489b27 2019-03-04 11:22:24 Timothy Pearson
Add master node session recovery support
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
M sesman/scp_v0.c
M sesman/scp_v1.c
M sesman/session.c
** Diff limit reached (max: 250 lines) **
c52abeb0 2019-03-04 11:22:24 Timothy Pearson
Add additional debug statement
M raptorsmiface/libraptorsmiface.c
** Diff limit reached (max: 250 lines) **
291f7f99 2019-03-04 11:22:24 Timothy Pearson
Fix merge
M sesman/scp_v0.c
M sesman/session.c
** Diff limit reached (max: 250 lines) **
dd0eb3e3 2019-03-04 11:22:24 Timothy Pearson
Add rudimentary sound support
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
M sesman/chansrv/chansrv.c
M sesman/chansrv/clipboard.c
M sesman/chansrv/sound.c
** Diff limit reached (max: 250 lines) **
44e65c80 2019-03-04 11:22:24 Timothy Pearson
Add statistics reporting
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
M xrdp/xrdp_types.h
** Diff limit reached (max: 250 lines) **
a82cbbf5 2019-03-04 11:22:24 Timothy Pearson
Add additional statistics reporting
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
M xrdp/xrdp.c
** Diff limit reached (max: 250 lines) **
5d8e68d5 2019-03-04 11:22:24 Timothy Pearson
Add MySQL database skeleton file
A database/mysql/remotelab_sm_database.sql
** Diff limit reached (max: 250 lines) **
9b4af30c 2019-03-04 11:22:24 Timothy Pearson
Add database configuration options to main config file
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
** Diff limit reached (max: 250 lines) **
daaf4156 2019-03-04 11:22:24 Timothy Pearson
Fix non-root-user display server startup failure
Transfer and clean up Kerberos ticket on login and logout
Remove spurious debugging messages
M instfiles/pam.d/xrdp-sesman
M raptorsmiface/libraptorsmiface.c
M sesman/chansrv/sound.c
M sesman/env.c
M xrdp/xrdp_login_wnd.c
** Diff limit reached (max: 250 lines) **
1702f742 2019-03-04 11:22:24 Timothy Pearson
Fix sporadic xrdp-sesman crash on session initiation
Fix a number of memory leaks
Fix access to freed memory
Fix invalid function return values
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
** Diff limit reached (max: 250 lines) **
bd49df9d 2019-03-04 11:22:24 Timothy Pearson
Download installation files from correct locations
Keep track of arbiter(s) in use per connection
M raptorsmiface/libraptorsmiface.c
M raptorsmiface/libraptorsmiface.h
M xorg/X11R7.6/buildx.sh
** Diff limit reached (max: 250 lines) **
178149fe 2019-03-04 11:22:24 Timothy Pearson
Second part of prior commit
M database/mysql/remotelab_sm_database.sql
** Diff limit reached (max: 250 lines) **
779588cc 2019-03-04 11:22:24 Timothy Pearson
Update for OpenSSL 1.1
M common/ssl_calls.c
** Diff limit reached (max: 250 lines) **
99898c85 2019-03-04 11:22:24 Timothy Pearson
Update sources to build on ppc64el
A xorg/X11R7.6/libdrm-2.4.26.patch
M xorg/X11R7.6/buildx.sh
** Diff limit reached (max: 250 lines) **
4b2e9a06 2019-03-04 11:22:24 Timothy Pearson
Fix endianness checks on ppc64
M common/arch.h
** Diff limit reached (max: 250 lines) **
539ee295 2019-03-04 11:22:24 Timothy Pearson
Don't try connecting to remote node if preliminary node allocation has failed for any reason
M sesman/session.c
** Diff limit reached (max: 250 lines) **
8f2f00c7 2019-03-04 11:22:24 Timothy Pearson
Add debug warning when maximum session limit is hit for a specified user group
M raptorsmiface/libraptorsmiface.c
** Diff limit reached (max: 250 lines) **
6933490c 2019-03-04 11:22:24 Timothy Pearson
Fix a few situations where process output was corrupted with existing uncleard buffer data
This fixes session termination not being marked in the database
M raptorsmiface/libraptorsmiface.c
** Diff limit reached (max: 250 lines) **
3bbe764c 2019-03-04 11:22:24 Timothy Pearson
Fix a couple of additional ppc64 endianness / alignment issues
A xorg/X11R7.6/xorg-server-1.9.3.patch
M common/arch.h
M xorg/X11R7.6/rdp/rdp.h
** Diff limit reached (max: 250 lines) **
56f48da7 2019-03-04 11:22:24 Timothy Pearson
Work around GTK pixmaps (e.g. GIMP icons, etc) showing up as black squares
M xorg/X11R7.6/rdp/rdpmain.c
** Diff limit reached (max: 250 lines) **