diff --git a/src/pipeline.c b/src/pipeline.c index 24ccb73..3f521e0 100644 --- a/src/pipeline.c +++ b/src/pipeline.c @@ -119,15 +119,21 @@ void ec3_pipeline_destroy(struct ec3_pipeline *p) enum ec3_status ec3_pipeline_encode_cluster( struct ec3_pipeline *pipeline, - void *in, + const void *in, size_t in_len, void *out, size_t out_max, size_t *out_len) { + if (in_len > out_max || out_max < pipeline->p_cluster_size) { + return EC3_ERR_INVALID_VALUE; + } + b_queue_entry *cur = b_queue_first(&pipeline->p_stages); enum ec3_status status = EC3_SUCCESS; - void *src = in; + memcpy(out, in, in_len); + + void *src = out; size_t stage_in_size = in_len; size_t stage_out_size = 0; @@ -170,7 +176,7 @@ enum ec3_status ec3_pipeline_encode_cluster( enum ec3_status ec3_pipeline_decode_cluster( struct ec3_pipeline *pipeline, - void *in, + const void *in, size_t in_len, void *out, size_t out_max, diff --git a/src/pipeline.h b/src/pipeline.h index 9d8f30b..63fba70 100644 --- a/src/pipeline.h +++ b/src/pipeline.h @@ -66,14 +66,14 @@ extern void ec3_pipeline_destroy(struct ec3_pipeline *p); extern enum ec3_status ec3_pipeline_encode_cluster( struct ec3_pipeline *pipeline, - void *in, + const void *in, size_t in_len, void *out, size_t out_max, size_t *out_len); extern enum ec3_status ec3_pipeline_decode_cluster( struct ec3_pipeline *pipeline, - void *in, + const void *in, size_t in_len, void *out, size_t out_max,