diff --git a/buildfix.patch b/buildfix.patch new file mode 100644 index 0000000..8fefc52 --- /dev/null +++ b/buildfix.patch @@ -0,0 +1,13 @@ +Index: b/genkeymap/genkeymap.c +=================================================================== +--- a/genkeymap/genkeymap.c 2020-08-26 10:32:21.000000000 +0800 ++++ b/genkeymap/genkeymap.c 2020-09-14 13:38:46.498825240 +0800 +@@ -44,7 +44,7 @@ + #include + #include + +-extern int xfree86_to_evdev[137-8]; ++extern int xfree86_to_evdev[137-8+1]; + + int main(int argc, char **argv) + { diff --git a/xrdp-0.9.13.1.tar.gz b/xrdp-0.9.13.1.tar.gz deleted file mode 100644 index b30be27..0000000 --- a/xrdp-0.9.13.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e90a15404c060c378a91b3b51899415122e801863b8a00e4ea42a106b184108c -size 1878031 diff --git a/xrdp-0.9.13.1.tar.gz.asc b/xrdp-0.9.13.1.tar.gz.asc deleted file mode 100644 index acc3d30..0000000 --- a/xrdp-0.9.13.1.tar.gz.asc +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCAAdFiEEGKuDipBxZ3RZFIcZA5k7QGXnGTsFAl764e4ACgkQA5k7QGXn -GTvL6g/+JGmCorupzV7CYN3ThrT8FZtOuYpm3cXQtkpvMMZb7LgzoCn96UWoVnnF -ldg3cdCvhDtf08Am619Uo1Qtet2Qk1w9ssdEChaz+dN/kw6BB88KtbehIaxEmsu7 -G+NSIQxC6T7gOSEwxNL35gv55fJgmBIyptri592awqIM7Y46704mELoDaHeIu0Je -B5R9eTuL0Pi02gcWA/8XDnYY6yg1xlh23+Z+yXqKbpX+qltEpuKff+eIDhM1m/N2 -Nd3/sHii9dvX3vXhdq2iH14sk4d701rJ6s+Qfw3iE7UcJLPwiIAIfepj3MU4bo8G -qwbQwrRHOCTRHlRV9DfQ2ZXqadP52w9D7ZQPE9Iqyk8UBJx3Gd1I8drg2iNBIkeK -w7sLfJmDdVgyMJjSbQ0CWMkTSzhIpdlRLeDdafusmLwLokpgVWPCeBEc2oW24A7B -gNysT3iur1vqYpx5PtgAf7eQ9/NqUKLS/nfVfvvCde0apXLgTUIUjOfR5fCkn6VA -OuqbysoYg+U99iQ/Yy4HWDO9msSf5V8ZoaMggxenbD9OQtJVgu8eaUqory+3jmQe -MNKUUtdFzy1DYTqkby8hN+ipL0jLA7DQWncx2+w9f0+Vh1t3uBP3z2YnzSORJXFX -P0CUtlQp0IJxBHqvuItVcOA5aPpErJNz45/UxVjk9btxGiU6feE= -=n35S ------END PGP SIGNATURE----- diff --git a/xrdp-0.9.14.tar.gz b/xrdp-0.9.14.tar.gz new file mode 100644 index 0000000..d7f2884 --- /dev/null +++ b/xrdp-0.9.14.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3a9d27da7881dbfb7fd22b33c11dd7390d42ca8ff94541e88f552b8dce1b5d2 +size 1885201 diff --git a/xrdp-0.9.14.tar.gz.asc b/xrdp-0.9.14.tar.gz.asc new file mode 100644 index 0000000..559a606 --- /dev/null +++ b/xrdp-0.9.14.tar.gz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEEGKuDipBxZ3RZFIcZA5k7QGXnGTsFAl9Mmh0ACgkQA5k7QGXn +GTuY+g/7Bx+1EW2wqMOwN8dgwtxWu87ixET4MDJ8JKT99uS/ERGVAZHDaAIBsaTA +4xGlx92zRXR1JNH6IwOIZy/l4YuYfuO6LVZBRab1dfz6YU7pU4OG1vqM98YMz4TR +Oca3VzgiIi/XuklJu42+d6S4C7k5IiquWK7JcjW+zd+Yn4e5iUnecDdswbuPeA+W +8/Gdfbytunh2PTKPy3egDluYBSYT+68Vla6YEo8GRdT4W7SAMwZqY6Sv1+iItTcU +dPGqrTVUyC5PXXJ8rOklZZtbQ3hTYg8ajrJhXawGJWuef12msjaZgODYM9HqYGlz +cXibCQEWhQj/hwyLDXHBmCFNmzWD0f5IEwXPJGNfpp3XrXjO43vC+pONZsxJQm/C +DLbA0wticzO22oRPaUAf1hmIWRAdj5htxpJO/oOncKAOlBPq7r3IIvwXpgpKLwe8 +Hm1uTYom6oeVh6D/Vkb7LIacdzXoEisG03NkHgnIgBlAZOfv4aV+mTUC/H7RKQfJ +11OUaMa2xLhwNQLXqKFkOTAwL2KurPQtjNEXY3ETRJc5BOV+i4HsS3QKppjJ6LaW +i52+kQIxA3Rsn6TP1cfac3JYTUFHMc8I5bOdxi7zFDDhXCvhy9bFL4nuiva5Wxk9 +a+8CTpzf9lejBdWZzB5X4Jfv2nEXX5uwGcbC05FV93Njn7oSfqw= +=519h +-----END PGP SIGNATURE----- diff --git a/xrdp-default-config.patch b/xrdp-default-config.patch index dddd9c6..222f9a4 100644 --- a/xrdp-default-config.patch +++ b/xrdp-default-config.patch @@ -1,8 +1,8 @@ Index: b/sesman/sesman.ini =================================================================== ---- a/sesman/sesman.ini 2018-12-27 17:50:27.173173569 +0800 -+++ b/sesman/sesman.ini 2018-12-27 17:51:31.737663351 +0800 -@@ -24,7 +24,7 @@ AlwaysGroupCheck=false +--- a/sesman/sesman.ini 2020-09-14 13:14:33.645606549 +0800 ++++ b/sesman/sesman.ini 2020-09-14 13:14:43.105484131 +0800 +@@ -27,7 +27,7 @@ RestrictOutboundClipboard=false ;; X11DisplayOffset - x11 display number offset ; Type: integer ; Default: 10 @@ -11,7 +11,7 @@ Index: b/sesman/sesman.ini ;; MaxSessions - maximum number of connections to an xrdp server ; Type: integer -@@ -62,9 +62,9 @@ Policy=Default +@@ -65,9 +65,9 @@ Policy=Default [Logging] LogFile=xrdp-sesman.log @@ -26,9 +26,9 @@ Index: b/sesman/sesman.ini ; Session definitions - startup command-line parameters for each session type Index: b/xrdp/xrdp.ini =================================================================== ---- a/xrdp/xrdp.ini 2018-12-27 17:50:27.173173569 +0800 -+++ b/xrdp/xrdp.ini 2018-12-27 17:57:38.260447082 +0800 -@@ -76,7 +76,7 @@ grey=dedede +--- a/xrdp/xrdp.ini 2020-09-14 13:14:33.645606549 +0800 ++++ b/xrdp/xrdp.ini 2020-09-14 13:14:43.105484131 +0800 +@@ -101,7 +101,7 @@ grey=dedede #ls_title=My Login Title ; top level window background color in RGB format @@ -37,7 +37,7 @@ Index: b/xrdp/xrdp.ini ; width and height of login screen ls_width=350 -@@ -119,9 +119,9 @@ ls_btn_cancel_height=30 +@@ -144,9 +144,9 @@ ls_btn_cancel_height=30 [Logging] LogFile=xrdp.log @@ -50,37 +50,3 @@ Index: b/xrdp/xrdp.ini ; LogLevel and SysLogLevel could by any of: core, error, warning, info or debug [Channels] -@@ -153,24 +153,24 @@ tcutils=true - ; Some session types such as Xorg, X11rdp and Xvnc start a display server. - ; Startup command-line parameters for the display server are configured - ; in sesman.ini. See and configure also sesman.ini. --[Xorg] --name=Xorg --lib=libxup.so -+[Xvnc] -+name=Xvnc -+lib=libvnc.so - username=ask - password=ask - ip=127.0.0.1 - port=-1 --code=20 -+#xserverbpp=24 -+delay_ms=2000 - --[Xvnc] --name=Xvnc --lib=libvnc.so -+[Xorg] -+name=Xorg -+lib=libxup.so - username=ask - password=ask - ip=127.0.0.1 - port=-1 --#xserverbpp=24 --#delay_ms=2000 -+code=20 - - [vnc-any] - name=vnc-any diff --git a/xrdp-disable-8-bpp-vnc-support.patch b/xrdp-disable-8-bpp-vnc-support.patch index 9d5bd85..6fd90c0 100644 --- a/xrdp-disable-8-bpp-vnc-support.patch +++ b/xrdp-disable-8-bpp-vnc-support.patch @@ -10,15 +10,17 @@ Xvnc drops support for 8 bpp since 1.4.0. Trying to launch Xvnc in vnc/vnc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) -diff --git a/vnc/vnc.c b/vnc/vnc.c -index b0eb29b3..db593da0 100644 ---- a/vnc/vnc.c -+++ b/vnc/vnc.c -@@ -1011,15 +1011,19 @@ lib_mod_connect(struct vnc *v) - /* check if bpp is supported for rdp connection */ +Index: b/vnc/vnc.c +=================================================================== +--- a/vnc/vnc.c 2020-09-14 13:20:01.611135290 +0800 ++++ b/vnc/vnc.c 2020-09-14 13:24:50.515034607 +0800 +@@ -1914,13 +1914,16 @@ lib_mod_connect(struct vnc *v) switch (v->server_bpp) { -- case 8: + case 8: ++ v->server_msg(v, "VNC error - 8 bpp support is dropped " ++ "since Xvnc 1.4.0", 0); ++ return 1; case 15: case 16: case 24: @@ -28,11 +30,5 @@ index b0eb29b3..db593da0 100644 - v->server_msg(v, "VNC error - only supporting 8, 15, 16, 24 and 32 " + v->server_msg(v, "VNC error - only supporting 15, 16, 24 and 32 " "bpp rdp connections", 0); -+ if (v->server_bpp == 8) -+ { -+ v->server_msg(v, "VNC error - 8 bpp support is dropped " -+ "since Xvnc 1.4.0", 0); -+ } - return 1; + return 1; } - diff --git a/xrdp-fate318398-change-expired-password.patch b/xrdp-fate318398-change-expired-password.patch index 2542437..cb4be44 100644 --- a/xrdp-fate318398-change-expired-password.patch +++ b/xrdp-fate318398-change-expired-password.patch @@ -1,7 +1,7 @@ -Index: xrdp-0.9.13.1/sesman/auth.h +Index: xrdp-0.9.14/sesman/auth.h =================================================================== ---- xrdp-0.9.13.1.orig/sesman/auth.h -+++ xrdp-0.9.13.1/sesman/auth.h +--- xrdp-0.9.14.orig/sesman/auth.h ++++ xrdp-0.9.14/sesman/auth.h @@ -106,4 +106,6 @@ auth_check_pwd_chg(const char *user); int auth_change_pwd(const char *user, const char *newpwd); @@ -9,10 +9,10 @@ Index: xrdp-0.9.13.1/sesman/auth.h +int +auth_change_pwd_pam(char* user, char* pass, char* newpwd); #endif -Index: xrdp-0.9.13.1/sesman/libscp/libscp_session.c +Index: xrdp-0.9.14/sesman/libscp/libscp_session.c =================================================================== ---- xrdp-0.9.13.1.orig/sesman/libscp/libscp_session.c -+++ xrdp-0.9.13.1/sesman/libscp/libscp_session.c +--- xrdp-0.9.14.orig/sesman/libscp/libscp_session.c ++++ xrdp-0.9.14/sesman/libscp/libscp_session.c @@ -75,6 +75,10 @@ scp_session_set_type(struct SCP_SESSION s->type = SCP_GW_AUTHENTICATION; break; @@ -57,10 +57,10 @@ Index: xrdp-0.9.13.1/sesman/libscp/libscp_session.c return 0; } -Index: xrdp-0.9.13.1/sesman/libscp/libscp_types.h +Index: xrdp-0.9.14/sesman/libscp/libscp_types.h =================================================================== ---- xrdp-0.9.13.1.orig/sesman/libscp/libscp_types.h -+++ xrdp-0.9.13.1/sesman/libscp/libscp_types.h +--- xrdp-0.9.14.orig/sesman/libscp/libscp_types.h ++++ xrdp-0.9.14/sesman/libscp/libscp_types.h @@ -47,6 +47,7 @@ * XRDP sends this command to let sesman verify if the user is allowed * to use the gateway */ @@ -77,10 +77,10 @@ Index: xrdp-0.9.13.1/sesman/libscp/libscp_types.h char* hostname; tui8 addr_type; tui32 ipv4addr; -Index: xrdp-0.9.13.1/sesman/libscp/libscp_v0.c +Index: xrdp-0.9.14/sesman/libscp/libscp_v0.c =================================================================== ---- xrdp-0.9.13.1.orig/sesman/libscp/libscp_v0.c -+++ xrdp-0.9.13.1/sesman/libscp/libscp_v0.c +--- xrdp-0.9.14.orig/sesman/libscp/libscp_v0.c ++++ xrdp-0.9.14/sesman/libscp/libscp_v0.c @@ -383,9 +383,9 @@ scp_v0s_init_session(struct SCP_CONNECTI } } @@ -133,10 +133,10 @@ Index: xrdp-0.9.13.1/sesman/libscp/libscp_v0.c out_uint16_be(c->out_s, value); /* reply code */ out_uint16_be(c->out_s, 0); /* dummy data */ s_mark_end(c->out_s); -Index: xrdp-0.9.13.1/sesman/libscp/libscp_v0.h +Index: xrdp-0.9.14/sesman/libscp/libscp_v0.h =================================================================== ---- xrdp-0.9.13.1.orig/sesman/libscp/libscp_v0.h -+++ xrdp-0.9.13.1/sesman/libscp/libscp_v0.h +--- xrdp-0.9.14.orig/sesman/libscp/libscp_v0.h ++++ xrdp-0.9.14/sesman/libscp/libscp_v0.h @@ -79,6 +79,6 @@ scp_v0s_deny_connection(struct SCP_CONNE * @return */ @@ -145,10 +145,10 @@ Index: xrdp-0.9.13.1/sesman/libscp/libscp_v0.h +scp_v0s_replyauthentication(struct SCP_CONNECTION* c, unsigned short int value, tui8 type); #endif -Index: xrdp-0.9.13.1/sesman/scp_v0.c +Index: xrdp-0.9.14/sesman/scp_v0.c =================================================================== ---- xrdp-0.9.13.1.orig/sesman/scp_v0.c -+++ xrdp-0.9.13.1/sesman/scp_v0.c +--- xrdp-0.9.14.orig/sesman/scp_v0.c ++++ xrdp-0.9.14/sesman/scp_v0.c @@ -42,6 +42,13 @@ scp_v0_process(struct SCP_CONNECTION *c, int errorcode = 0; bool_t do_auth_end = 1; @@ -189,19 +189,19 @@ Index: xrdp-0.9.13.1/sesman/scp_v0.c } } else if (data) -Index: xrdp-0.9.13.1/sesman/verify_user_pam.c +Index: xrdp-0.9.14/sesman/verify_user_pam.c =================================================================== ---- xrdp-0.9.13.1.orig/sesman/verify_user_pam.c -+++ xrdp-0.9.13.1/sesman/verify_user_pam.c -@@ -38,6 +38,7 @@ struct t_user_pass +--- xrdp-0.9.14.orig/sesman/verify_user_pam.c ++++ xrdp-0.9.14/sesman/verify_user_pam.c +@@ -41,6 +41,7 @@ struct t_user_pass { - char user[256]; - char pass[256]; -+ char newpwd[256]; + char user[MAX_BUF]; + char pass[MAX_BUF]; ++ char newpwd[MAX_BUF]; }; struct t_auth_info -@@ -86,6 +87,55 @@ verify_pam_conv(int num_msg, const struc +@@ -89,6 +90,55 @@ verify_pam_conv(int num_msg, const struc } /******************************************************************************/ @@ -257,7 +257,7 @@ Index: xrdp-0.9.13.1/sesman/verify_user_pam.c static void get_service_name(char *service_name) { -@@ -103,6 +153,52 @@ get_service_name(char *service_name) +@@ -106,6 +156,52 @@ get_service_name(char *service_name) } /******************************************************************************/ @@ -310,10 +310,10 @@ Index: xrdp-0.9.13.1/sesman/verify_user_pam.c /* returns long, zero is no go Stores the detailed error code in the errorcode variable*/ -Index: xrdp-0.9.13.1/xrdp/xrdp_login_wnd.c +Index: xrdp-0.9.14/xrdp/xrdp_login_wnd.c =================================================================== ---- xrdp-0.9.13.1.orig/xrdp/xrdp_login_wnd.c -+++ xrdp-0.9.13.1/xrdp/xrdp_login_wnd.c +--- xrdp-0.9.14.orig/xrdp/xrdp_login_wnd.c ++++ xrdp-0.9.14/xrdp/xrdp_login_wnd.c @@ -187,7 +187,14 @@ xrdp_wm_cancel_clicked(struct xrdp_bitma { if (wnd->wm != 0) @@ -498,10 +498,10 @@ Index: xrdp-0.9.13.1/xrdp/xrdp_login_wnd.c /** * Load configuration from xrdp.ini file -Index: xrdp-0.9.13.1/xrdp/xrdp_mm.c +Index: xrdp-0.9.14/xrdp/xrdp_mm.c =================================================================== ---- xrdp-0.9.13.1.orig/xrdp/xrdp_mm.c -+++ xrdp-0.9.13.1/xrdp/xrdp_mm.c +--- xrdp-0.9.14.orig/xrdp/xrdp_mm.c ++++ xrdp-0.9.14/xrdp/xrdp_mm.c @@ -1781,7 +1781,7 @@ xrdp_mm_sesman_data_in(struct trans *tra /*********************************************************************/ /* return 0 on success */ @@ -578,7 +578,7 @@ Index: xrdp-0.9.13.1/xrdp/xrdp_mm.c g_strncpy(pam_auth_username, value, 255); } else if (g_strcasecmp(name, "pamsessionmng") == 0) -@@ -2240,45 +2253,56 @@ xrdp_mm_connect(struct xrdp_mm *self) +@@ -2240,45 +2253,55 @@ xrdp_mm_connect(struct xrdp_mm *self) } #ifndef USE_NOPAM @@ -590,7 +590,6 @@ Index: xrdp-0.9.13.1/xrdp/xrdp_mm.c - xrdp_wm_log_msg(self->wm, LOG_LEVEL_DEBUG, - "Please wait, we now perform access control..."); + int reply; -+ char replytxt[128]; + char pam_error[128]; + const char *additionalError; + xrdp_wm_log_msg(self->wm, LOG_LEVEL_INFO, "Please wait, we now perform access control..."); @@ -666,7 +665,7 @@ Index: xrdp-0.9.13.1/xrdp/xrdp_mm.c } #endif -@@ -2374,6 +2398,59 @@ xrdp_mm_connect(struct xrdp_mm *self) +@@ -2374,6 +2397,59 @@ xrdp_mm_connect(struct xrdp_mm *self) return rv; } @@ -679,7 +678,6 @@ Index: xrdp-0.9.13.1/xrdp/xrdp_mm.c + int index; + int count; + int old_idx; -+ int new_idx; + char *username; + char *password; + char *newpass; @@ -687,8 +685,10 @@ Index: xrdp-0.9.13.1/xrdp/xrdp_mm.c + char *name; + char *value; + ++ old_idx = -1; + username = 0; + password = 0; ++ newpass = 0; + count = self->login_names->count; + + for (index = 0; index < count; index++) @@ -708,12 +708,11 @@ Index: xrdp-0.9.13.1/xrdp/xrdp_mm.c + else if (g_strcasecmp(name, "newpass") == 0) + { + newpass = value; -+ new_idx = index; + } + g_strncpy(sessionIP, "127.0.0.1", 255); + } + rv = access_control(username, password, newpass, sessionIP, 5); -+ if (rv == 0) ++ if (rv == 0 && old_idx >= 0 && old_idx < count && password != 0) + { + list_remove_item (self->login_names, old_idx); + list_remove_item (self->login_values, old_idx); @@ -726,10 +725,10 @@ Index: xrdp-0.9.13.1/xrdp/xrdp_mm.c /*****************************************************************************/ int xrdp_mm_get_wait_objs(struct xrdp_mm *self, -Index: xrdp-0.9.13.1/xrdp/xrdp_types.h +Index: xrdp-0.9.14/xrdp/xrdp_types.h =================================================================== ---- xrdp-0.9.13.1.orig/xrdp/xrdp_types.h -+++ xrdp-0.9.13.1/xrdp/xrdp_types.h +--- xrdp-0.9.14.orig/xrdp/xrdp_types.h ++++ xrdp-0.9.14/xrdp/xrdp_types.h @@ -329,6 +329,7 @@ struct xrdp_wm struct xrdp_cache* cache; int palette[256]; @@ -738,11 +737,11 @@ Index: xrdp-0.9.13.1/xrdp/xrdp_types.h /* generic colors */ int black; int grey; -Index: xrdp-0.9.13.1/xrdp/xrdp_wm.c +Index: xrdp-0.9.14/xrdp/xrdp_wm.c =================================================================== ---- xrdp-0.9.13.1.orig/xrdp/xrdp_wm.c -+++ xrdp-0.9.13.1/xrdp/xrdp_wm.c -@@ -1990,6 +1990,34 @@ xrdp_wm_login_mode_changed(struct xrdp_w +--- xrdp-0.9.14.orig/xrdp/xrdp_wm.c ++++ xrdp-0.9.14/xrdp/xrdp_wm.c +@@ -1996,6 +1996,34 @@ xrdp_wm_login_mode_changed(struct xrdp_w self->dragging = 0; xrdp_wm_set_login_mode(self, 11); } @@ -777,7 +776,7 @@ Index: xrdp-0.9.13.1/xrdp/xrdp_wm.c return 0; } -@@ -2034,11 +2062,19 @@ xrdp_wm_log_wnd_notify(struct xrdp_bitma +@@ -2040,11 +2068,19 @@ xrdp_wm_log_wnd_notify(struct xrdp_bitma xrdp_bitmap_invalidate(wm->screen, &rect); /* if module is gone, reset the session when ok is clicked */ @@ -798,7 +797,7 @@ Index: xrdp-0.9.13.1/xrdp/xrdp_wm.c } } } -@@ -2100,6 +2136,9 @@ xrdp_wm_show_log(struct xrdp_wm *self) +@@ -2106,6 +2142,9 @@ xrdp_wm_show_log(struct xrdp_wm *self) return 0; } @@ -808,3 +807,39 @@ Index: xrdp-0.9.13.1/xrdp/xrdp_wm.c if (self->log_wnd == 0) { w = DEFAULT_WND_LOG_W; +Index: xrdp-0.9.14/xrdp/xrdp.h +=================================================================== +--- xrdp-0.9.14.orig/xrdp/xrdp.h ++++ xrdp-0.9.14/xrdp/xrdp.h +@@ -360,6 +360,8 @@ int + xrdp_login_wnd_create(struct xrdp_wm* self); + int + load_xrdp_config(struct xrdp_config *config, int bpp); ++int ++xrdp_newpass_wnd_create(struct xrdp_wm *self); + + /* xrdp_bitmap_compress.c */ + int +@@ -394,6 +396,8 @@ xrdp_mm_check_wait_objs(struct xrdp_mm* + int + xrdp_mm_frame_ack(struct xrdp_mm *self, int frame_id); + int ++xrdp_mm_change_expired_password(struct xrdp_mm *self); ++int + server_begin_update(struct xrdp_mod* mod); + int + server_end_update(struct xrdp_mod* mod); +Index: xrdp-0.9.14/sesman/libscp/libscp_session.h +=================================================================== +--- xrdp-0.9.14.orig/sesman/libscp/libscp_session.h ++++ xrdp-0.9.14/sesman/libscp/libscp_session.h +@@ -94,6 +94,9 @@ scp_session_set_errstr(struct SCP_SESSIO + int + scp_session_set_guid(struct SCP_SESSION *s, const tui8 *guid); + ++int ++scp_session_set_newpass(struct SCP_SESSION *s, char *str); ++ + /** + * + * @brief destroys a session object diff --git a/xrdp-fate319683-allow-vnc-resizing.patch b/xrdp-fate319683-allow-vnc-resizing.patch deleted file mode 100644 index b4bec22..0000000 --- a/xrdp-fate319683-allow-vnc-resizing.patch +++ /dev/null @@ -1,129 +0,0 @@ -Index: b/sesman/sesman.ini -=================================================================== ---- a/sesman/sesman.ini 2019-10-12 17:45:30.594432280 +0800 -+++ b/sesman/sesman.ini 2019-10-12 17:45:37.222491421 +0800 -@@ -55,7 +55,7 @@ IdleTimeLimit=0 - - ;; Policy - session allocation policy - ; Type: enum [ "Default" | "UBD" | "UBI" | "UBC" | "UBDI" | "UBDC" ] --; Default: Xrdp: and Xvnc: -+; Default: Xrdp and Xvnc: - ; "UBD" session per - ; "UBI" session per - ; "UBC" session per -Index: b/sesman/session.c -=================================================================== ---- a/sesman/session.c 2019-10-12 17:45:30.598432316 +0800 -+++ b/sesman/session.c 2019-10-12 17:45:37.222491421 +0800 -@@ -105,9 +105,6 @@ session_get_bydata(const char *name, int - { - case SCP_SESSION_TYPE_XVNC: /* 0 */ - type = SESMAN_SESSION_TYPE_XVNC; /* 2 */ -- /* Xvnc cannot resize */ -- policy = (enum SESMAN_CFG_SESS_POLICY) -- (policy | SESMAN_CFG_SESS_POLICY_D); - break; - case SCP_SESSION_TYPE_XRDP: /* 1 */ - type = SESMAN_SESSION_TYPE_XRDP; /* 1 */ -Index: b/vnc/vnc.c -=================================================================== ---- a/vnc/vnc.c 2019-10-12 17:45:30.598432316 +0800 -+++ b/vnc/vnc.c 2019-10-12 17:49:39.956657294 +0800 -@@ -385,7 +385,8 @@ lib_mod_event(struct vnc *v, int msg, lo - /* FramebufferUpdateRequest */ - init_stream(s, 8192); - out_uint8(s, 3); -- out_uint8(s, 0); -+ out_uint8(s, v->incremental); -+ v->incremental = 1; - x = (param1 >> 16) & 0xffff; - out_uint16_be(s, x); - y = param1 & 0xffff; -@@ -727,7 +728,24 @@ lib_framebuffer_update(struct vnc *v) - { - v->mod_width = cx; - v->mod_height = cy; -- error = v->server_reset(v, cx, cy, v->mod_bpp); -+ } -+ else if (encoding == 0xfffffecc) /* extended desktop resize */ -+ { -+ init_stream(s, 8192); -+ error = trans_force_read_s(v->trans, s, 4); -+ if (error == 0) -+ { -+ in_uint8(s, k); /* number of screens */ -+ in_uint8s(s, 3); -+ error = trans_force_read_s(v->trans, s, k * 16); -+ if (error == 0) -+ { -+ in_uint8s(s, k * 16); /* skip screen list */ -+ /* note new dimensions for later */ -+ v->server_width = cx; -+ v->server_height = cy; -+ } -+ } - } - else - { -@@ -743,6 +761,15 @@ lib_framebuffer_update(struct vnc *v) - error = v->server_end_update(v); - } - -+ if (v->mod_width != v->server_width || v->mod_height != v->server_height) -+ { -+ /* perform actual resize outside the update */ -+ v->mod_width = v->server_width; -+ v->mod_height = v->server_height; -+ error = v->server_reset(v, v->mod_width, v->mod_height, v->mod_bpp); -+ v->incremental = 0; -+ } -+ - if (error == 0) - { - if (v->suppress_output == 0) -@@ -750,7 +777,8 @@ lib_framebuffer_update(struct vnc *v) - /* FramebufferUpdateRequest */ - init_stream(s, 8192); - out_uint8(s, 3); -- out_uint8(s, 1); -+ out_uint8(s, v->incremental); -+ v->incremental = 1; - out_uint16_be(s, 0); - out_uint16_be(s, 0); - out_uint16_be(s, v->mod_width); -@@ -1333,11 +1361,12 @@ lib_mod_connect(struct vnc *v) - init_stream(s, 8192); - out_uint8(s, 2); - out_uint8(s, 0); -- out_uint16_be(s, 4); -+ out_uint16_be(s, 5); - out_uint32_be(s, 0); /* raw */ - out_uint32_be(s, 1); /* copy rect */ - out_uint32_be(s, 0xffffff11); /* cursor */ - out_uint32_be(s, 0xffffff21); /* desktop size */ -+ out_uint32_be(s, 0xfffffecc); /* extended desktop resize */ - v->server_msg(v, "VNC sending encodings", 0); - s_mark_end(s); - error = trans_force_write_s(v->trans, s); -@@ -1530,7 +1559,8 @@ lib_mod_suppress_output(struct vnc* v, i - make_stream(s); - init_stream(s, 8192); - out_uint8(s, 3); -- out_uint8(s, 0); -+ out_uint8(s, v->incremental); -+ v->incremental = 1; - out_uint16_be(s, 0); - out_uint16_be(s, 0); - out_uint16_be(s, v->mod_width); -Index: b/vnc/vnc.h -=================================================================== ---- a/vnc/vnc.h 2019-10-12 17:45:30.598432316 +0800 -+++ b/vnc/vnc.h 2019-10-12 17:45:37.222491421 +0800 -@@ -116,6 +116,7 @@ struct vnc - int clip_chanid; - struct stream *clip_data_s; - int delay_ms; -+ int incremental; - struct trans *trans; - int got_guid; - tui8 guid[16]; diff --git a/xrdp.changes b/xrdp.changes index 905d9c6..3a6bbed 100644 --- a/xrdp.changes +++ b/xrdp.changes @@ -1,3 +1,33 @@ +------------------------------------------------------------------- +Mon Sep 14 04:04:20 UTC 2020 - Felix Zhang + +- Update to version 0.9.14 + + New features + - Multi monitor and resize support for Xvnc backend #1343 + For more details see + https://github.com/neutrinolabs/xrdp/wiki/Xvnc-backend-:-Multi-monitor-and-resize-support + - Support Programmer Dvorak Keyboard #1663 + + Bug fixes + - Fix odd shift key behavior (workaround) #397 #1522 + - Fix internal username/password buffer is smaller than RDP + protocol specification #1648 #1653 + - Fix possible memory out-of-bounds accesses #1549 + - Fix memory allocation overflow #1557 + - Prevent chansrv input channels being scanned during a server + reset #1595 + - Ignore TS_MULTIFRAGMENTUPDATE_CAPABILITYSET from client if fp + disabled #1593 + + Known issues + - FreeRDP 2.0.0-rc4 or later might not able to connect to xrdp + due to xrdp's bad-mannered behaviour, add +glyph-cache option + to FreeRDP to connect #1266 + - Audio redirection by MP3 codec doesn't sound with some + client, use AAC instead #965 +- Drop xrdp-fate319683-allow-vnc-resizing.patch: fixed upstream +- Rebase xrdp-default-config.patch +- Rebase xrdp-disable-8-bpp-vnc-support.patch +- Rebase xrdp-fate318398-change-expired-password.patch + ------------------------------------------------------------------- Fri Jul 10 02:27:32 UTC 2020 - Yifan Jiang diff --git a/xrdp.spec b/xrdp.spec index 0c513f0..cba7a11 100644 --- a/xrdp.spec +++ b/xrdp.spec @@ -22,7 +22,7 @@ %endif Name: xrdp -Version: 0.9.13.1 +Version: 0.9.14 Release: 0 Summary: Remote desktop protocol (RDP) server License: Apache-2.0 AND GPL-2.0-or-later @@ -52,8 +52,7 @@ Patch12: xrdp-filter-tab-from-mstsc-on-focus-change.patch Patch13: xrdp-bsc965647-allow-admin-choose-desktop.patch # PATCH-FEATURE-SLE xrdp-fate318398-change-expired-password.patch fate#318398 - fezhang@suse.com -- enable user to update expired password via PAM Patch14: xrdp-fate318398-change-expired-password.patch -# PATCH-FEATURE-SLE xrdp-fate319683-allow-vnc-resizing.patch fate#319683 bsc#948062 - fezhang@suse.com -- allow resizing in VNC sessions. -Patch15: xrdp-fate319683-allow-vnc-resizing.patch +Patch16: buildfix.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: fdupes @@ -110,8 +109,8 @@ This package contains libraries for the JPEG2000 codec for RDP. %patch12 -p1 %patch13 -p1 %patch14 -p1 -%patch15 -p1 %endif +%patch16 -p1 %build sh ./bootstrap