1
0
mirror of https://github.com/fumiama/base16384.git synced 2026-06-08 04:00:25 +08:00

修复指针越界

This commit is contained in:
fumiama
2021-10-28 14:01:26 +08:00
parent fccf987d69
commit eab6a5d8e9
2 changed files with 4 additions and 4 deletions

View File

@@ -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);

View File

@@ -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);