From c47aa0cea1a654152208272bb59cd0c94e3351c7 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 30 Jul 2019 13:34:24 -0700 Subject: [PATCH] GUACAMOLE-629: Define constant for maximum blob size. --- src/libguac/encode-jpeg.c | 2 +- src/libguac/encode-png.c | 2 +- src/libguac/encode-webp.c | 2 +- src/libguac/guacamole/protocol-constants.h | 9 +++++++++ src/libguac/raw_encoder.c | 4 ++-- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/libguac/encode-jpeg.c b/src/libguac/encode-jpeg.c index 1aeb23bb..8e145d86 100644 --- a/src/libguac/encode-jpeg.c +++ b/src/libguac/encode-jpeg.c @@ -59,7 +59,7 @@ typedef struct guac_jpeg_destination_mgr { /** * The output buffer. */ - unsigned char buffer[6048]; + unsigned char buffer[GUAC_PROTOCOL_BLOB_MAX_LENGTH]; } guac_jpeg_destination_mgr; diff --git a/src/libguac/encode-png.c b/src/libguac/encode-png.c index 7d4b6c7f..20d2f5de 100644 --- a/src/libguac/encode-png.c +++ b/src/libguac/encode-png.c @@ -56,7 +56,7 @@ typedef struct guac_png_write_state { /** * Buffer of pending PNG data. */ - char buffer[6048]; + char buffer[GUAC_PROTOCOL_BLOB_MAX_LENGTH]; /** * The number of bytes currently stored in the buffer. diff --git a/src/libguac/encode-webp.c b/src/libguac/encode-webp.c index 5c2237d6..43c5a00c 100644 --- a/src/libguac/encode-webp.c +++ b/src/libguac/encode-webp.c @@ -52,7 +52,7 @@ typedef struct guac_webp_stream_writer { /** * Buffer of pending WebP data. */ - char buffer[6048]; + char buffer[GUAC_PROTOCOL_BLOB_MAX_LENGTH]; /** * The number of bytes currently stored in the buffer. diff --git a/src/libguac/guacamole/protocol-constants.h b/src/libguac/guacamole/protocol-constants.h index 6ad7bf14..afa67bb9 100644 --- a/src/libguac/guacamole/protocol-constants.h +++ b/src/libguac/guacamole/protocol-constants.h @@ -40,5 +40,14 @@ */ #define GUACAMOLE_PROTOCOL_VERSION "VERSION_1_1_0" +/** + * The maximum number of bytes that should be sent in any one blob instruction + * to ensure the instruction does not exceed the maximum allowed instruction + * size. + * + * @see GUAC_INSTRUCTION_MAX_LENGTH + */ +#define GUAC_PROTOCOL_BLOB_MAX_LENGTH 6048 + #endif diff --git a/src/libguac/raw_encoder.c b/src/libguac/raw_encoder.c index 9086a37b..98024cd2 100644 --- a/src/libguac/raw_encoder.c +++ b/src/libguac/raw_encoder.c @@ -129,8 +129,8 @@ static void raw_encoder_flush_handler(guac_audio_stream* audio) { /* Determine size of blob to be written */ int chunk_size = remaining; - if (chunk_size > 6048) - chunk_size = 6048; + if (chunk_size > GUAC_PROTOCOL_BLOB_MAX_LENGTH) + chunk_size = GUAC_PROTOCOL_BLOB_MAX_LENGTH; /* Send audio data */ guac_protocol_send_blob(socket, stream, current, chunk_size);