summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libxrdp/xrdp_caps.c5
-rw-r--r--libxrdp/xrdp_iso.c7
-rw-r--r--libxrdp/xrdp_orders.c14
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;