diff --git a/32/base14.c b/32/base14.c index f9e8871..910da0d 100644 --- a/32/base14.c +++ b/32/base14.c @@ -28,7 +28,7 @@ LENDAT* encode(const uint8_t* data, const uint32_t len) { uint32_t* vals = (uint32_t*)(encd->data); uint32_t n = 0; uint32_t i = 0; - for(; i < len; i += 7) { + for(; i <= len - 7; i += 7) { register uint32_t sum = 0x0000003f & ((uint32_t)data[i] >> 2); sum |= (((uint32_t)data[i + 1] << 6) | (data[i] << 14)) & 0x0000ff00; sum |= (((uint32_t)data[i + 1] << 20) | ((uint32_t)data[i + 2] << 12)) & 0x003f0000; @@ -108,7 +108,7 @@ LENDAT* decode(const uint8_t* data, const uint32_t len) { uint32_t* vals = (uint32_t*)data; uint32_t n = 0; uint32_t i = 0; - for(; n < len / 4; n++) { //n实际每次自增2 + for(; i <= outlen - 7; n++) { //n实际每次自增2 register uint32_t sum = vals[n++]; sum -= 0x004e004e; decd->data[i++] = ((sum & 0x0000003f) << 2) | ((sum & 0x0000c000) >> 14); diff --git a/64/base14.c b/64/base14.c index 3d67bbf..74ce8fe 100644 --- a/64/base14.c +++ b/64/base14.c @@ -28,7 +28,7 @@ LENDAT* encode(const uint8_t* data, const uint64_t len) { uint64_t* vals = (uint64_t*)(encd->data); uint64_t n = 0; uint64_t i = 0; - for(; i < len; i += 7) { + for(; i <= len - 7; i += 7) { register uint64_t sum = 0x000000000000003f & ((uint64_t)data[i] >> 2); sum |= (((uint64_t)data[i + 1] << 6) | (data[i] << 14)) & 0x000000000000ff00; sum |= (((uint64_t)data[i + 1] << 20) | ((uint64_t)data[i + 2] << 12)) & 0x00000000003f0000; @@ -100,7 +100,7 @@ LENDAT* decode(const uint8_t* data, const uint64_t len) { uint64_t* vals = (uint64_t*)data; uint64_t n = 0; uint64_t i = 0; - for(; n < len / 8; n++) { + for(; i <= outlen - 7; n++) { register uint64_t sum = vals[n]; sum -= 0x004e004e004e004e; decd->data[i++] = ((sum & 0x000000000000003f) << 2) | ((sum & 0x000000000000c000) >> 14);