|
|
- diff --git a/src/main-ctl-unix.c b/src/main-ctl-unix.c
- index b4da5eb..90d604f 100644
- --- a/src/main-ctl-unix.c
- +++ b/src/main-ctl-unix.c
- @@ -629,7 +629,7 @@ static void ctl_handle_commands(main_server_st * s)
- }
- goto cleanup;
- }
- - length = (buffer[2] << 8) | buffer[1];
- + memcpy(&length, &buffer[1], 2);
- buffer_size = ret - 3;
-
- if (length != buffer_size) {
- diff --git a/src/occtl-unix.c b/src/occtl-unix.c
- index 183825d..0c1b3e1 100644
- --- a/src/occtl-unix.c
- +++ b/src/occtl-unix.c
- @@ -83,15 +83,14 @@ int send_cmd(struct unix_ctx *ctx, unsigned cmd, const void *data,
- struct iovec iov[2];
- unsigned iov_len = 1;
- int e, ret;
- - unsigned length = 0;
- + uint16_t length = 0;
- void *packed = NULL;
-
- if (get_size)
- length = get_size(data);
-
- header[0] = cmd;
- - header[1] = length;
- - header[2] = length >> 8;
- + memcpy(&header[1], &length, 2);
-
- iov[0].iov_base = header;
- iov[0].iov_len = 3;
- @@ -145,7 +144,7 @@ int send_cmd(struct unix_ctx *ctx, unsigned cmd, const void *data,
- goto fail;
- }
-
- - length = (header[2] << 8) | header[1];
- + memcpy(&length, &header[1], 2);
-
- rep->data_size = length;
- rep->data = talloc_size(ctx, length);
- diff --git a/src/sec-mod.c b/src/sec-mod.c
- index 15ee32a..c3d4bad 100644
- --- a/src/sec-mod.c
- +++ b/src/sec-mod.c
- @@ -354,6 +354,7 @@ void sec_mod_server(void *main_pool, struct cfg_st *config, const char *socket_f
- unsigned cmd, length;
- unsigned i, buffer_size;
- uint8_t *buffer, *tpool;
- + uint16_t l16;
- struct pin_st pins;
- int sd;
- sec_mod_st *sec;
- @@ -538,10 +539,11 @@ void sec_mod_server(void *main_pool, struct cfg_st *config, const char *socket_f
- }
-
- cmd = buffer[0];
- - length = buffer[1] | buffer[2] << 8;
- + memcpy(&l16, &buffer[1], 2);
- + length = l16;
-
- if (length > buffer_size - 4) {
- - seclog(LOG_INFO, "too big message");
- + seclog(LOG_INFO, "too big message (%d)", length);
- goto cont;
- }
-
|