diff options
-rw-r--r-- | libxrdp/xrdp_caps.c | 5 | ||||
-rw-r--r-- | libxrdp/xrdp_iso.c | 7 | ||||
-rw-r--r-- | libxrdp/xrdp_orders.c | 14 |
3 files changed, 23 insertions, 3 deletions
diff --git a/libxrdp/xrdp_caps.c b/libxrdp/xrdp_caps.c index 300704c6..8a57c003 100644 --- a/libxrdp/xrdp_caps.c +++ b/libxrdp/xrdp_caps.c @@ -550,6 +550,11 @@ xrdp_caps_process_confirm_active(struct xrdp_rdp *self, struct stream *s) in_uint16_le(s, num_caps); in_uint8s(s, 2); /* pad */ + if ((cap_len < 0) || (cap_len > 1024 * 1024)) + { + return 1; + } + for (index = 0; index < num_caps; index++) { p = s->p; diff --git a/libxrdp/xrdp_iso.c b/libxrdp/xrdp_iso.c index 8369226c..ce3baf70 100644 --- a/libxrdp/xrdp_iso.c +++ b/libxrdp/xrdp_iso.c @@ -355,11 +355,18 @@ xrdp_iso_incoming(struct xrdp_iso *self) { text[cookie_index] = cc_type; cookie_index++; + if (cookie_index > 255) + { + cookie_index = 255; + } if ((s->p[0] == 0x0D) && (s->p[1] == 0x0A)) { in_uint8s(s, 2); text[cookie_index] = 0; cookie_index = 0; + if (g_strlen(text) > 0) + { + } break; } in_uint8(s, cc_type); diff --git a/libxrdp/xrdp_orders.c b/libxrdp/xrdp_orders.c index b2f1e582..d7a2d017 100644 --- a/libxrdp/xrdp_orders.c +++ b/libxrdp/xrdp_orders.c @@ -2641,6 +2641,7 @@ height(%d)", lines_sending, height); return 0; } +#if defined(XRDP_JPEG) /*****************************************************************************/ static int xrdp_orders_send_as_jpeg(struct xrdp_orders *self, @@ -2663,6 +2664,7 @@ xrdp_orders_send_as_jpeg(struct xrdp_orders *self, return 1; } +#endif #if defined(XRDP_NEUTRINORDP) /*****************************************************************************/ @@ -2693,6 +2695,7 @@ xrdp_orders_send_as_rfx(struct xrdp_orders *self, } #endif +#if defined(XRDP_JPEG) || defined(XRDP_NEUTRINORDP) /*****************************************************************************/ static int APP_CC xrdp_orders_out_v3(struct xrdp_orders *self, int cache_id, int cache_idx, @@ -2733,6 +2736,7 @@ xrdp_orders_out_v3(struct xrdp_orders *self, int cache_id, int cache_idx, out_uint8a(self->out_s, buf, bufsize); return 0; } +#endif /*****************************************************************************/ /* secondary drawing order (bitmap v3) using remotefx compression */ @@ -2741,12 +2745,16 @@ xrdp_orders_send_bitmap3(struct xrdp_orders *self, int width, int height, int bpp, char *data, int cache_id, int cache_idx, int hints) { - int e; + struct xrdp_client_info *ci; +#if defined(XRDP_JPEG) || defined(XRDP_NEUTRINORDP) int bufsize; - int quality; struct stream *xr_s; /* xrdp stream */ +#endif +#if defined(XRDP_JPEG) + int e; + int quality; struct stream *temp_s; /* xrdp stream */ - struct xrdp_client_info *ci; +#endif #if defined(XRDP_NEUTRINORDP) STREAM *fr_s; /* FreeRDP stream */ RFX_CONTEXT *context; |