diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backends/isa-l/isa_l_rs_vand.c | 10 | ||||
-rw-r--r-- | src/erasurecode.c | 7 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/backends/isa-l/isa_l_rs_vand.c b/src/backends/isa-l/isa_l_rs_vand.c index d2f740f..ebce441 100644 --- a/src/backends/isa-l/isa_l_rs_vand.c +++ b/src/backends/isa-l/isa_l_rs_vand.c @@ -261,7 +261,10 @@ static int isa_l_rs_vand_decode(void *desc, char **data, char **parity, goto out; } - isa_l_desc->gf_invert_matrix(decode_matrix, decode_inverse, k); + int im_ret = isa_l_desc->gf_invert_matrix(decode_matrix, decode_inverse, k); + if (im_ret < 0) { + goto out; + } // Generate g_tbls from computed decode matrix (k x k) matrix g_tbls = malloc(sizeof(unsigned char) * (k * m * 32)); @@ -365,7 +368,10 @@ static int isa_l_rs_vand_reconstruct(void *desc, char **data, char **parity, goto out; } - isa_l_desc->gf_invert_matrix(decode_matrix, decode_inverse, k); + int im_ret = isa_l_desc->gf_invert_matrix(decode_matrix, decode_inverse, k); + if (im_ret < 0) { + goto out; + } /** * Get the row needed to reconstruct diff --git a/src/erasurecode.c b/src/erasurecode.c index 540cc26..fdae72a 100644 --- a/src/erasurecode.c +++ b/src/erasurecode.c @@ -331,7 +331,7 @@ int liberasurecode_instance_destroy(int desc) /* dlclose() backend library */ liberasurecode_backend_close(instance); - /* Remove instace from registry */ + /* Remove instance from registry */ rc = liberasurecode_backend_instance_unregister(instance); if (rc == 0) { free(instance); @@ -1075,6 +1075,9 @@ int is_invalid_fragment_header(fragment_header_t *header) { uint32_t *stored_csum = NULL, csum = 0; assert (NULL != header); + if (header->libec_version == 0) + /* libec_version must be bigger than 0 */ + return 1; if (header->libec_version < _VERSION(1,2,0)) /* no metadata checksum support */ return 0; @@ -1090,7 +1093,7 @@ int liberasurecode_verify_fragment_metadata(ec_backend_t be, { int k = be->args.uargs.k; int m = be->args.uargs.m; - if (md->idx < 0 || (md->idx > (k + m))) { + if (md->idx > (k + m)) { return 1; } if (md->backend_id != be->common.id) { |