Mercurial > repos > blastem
changeset 2346:0111c8344477
Fix some issues identified by asan/ubsan
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 07 Oct 2023 18:04:35 -0700 |
parents | c76c81c21ae5 |
children | 047253715fd8 |
files | 68kinst.c hash.c m68k_core.c m68k_core.h png.c render_sdl.c zip.c |
diffstat | 7 files changed, 11 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/68kinst.c Fri Oct 06 00:20:37 2023 -0700 +++ b/68kinst.c Sat Oct 07 18:04:35 2023 -0700 @@ -150,7 +150,7 @@ dst->addr_mode = MODE_ABSOLUTE; ext = fetch(address, data); address += 2; - dst->params.immed = ext << 16 | fetch(address, data); + dst->params.immed = ((uint32_t)ext) << 16 | fetch(address, data); address += 2; break; case 3: @@ -268,7 +268,7 @@ dst->params.immed = ext; break; case OPSIZE_LONG: - dst->params.immed = ext << 16 | fetch(address, data); + dst->params.immed = ((uint32_t)ext) << 16 | fetch(address, data); address += 2; break; }
--- a/hash.c Fri Oct 06 00:20:37 2023 -0700 +++ b/hash.c Sat Oct 07 18:04:35 2023 -0700 @@ -26,7 +26,7 @@ memcpy(state, hash, sizeof(state)); for (uint32_t src = 0; src < 64; src += 4) { - w[src >> 2] = chunk[src] << 24 | chunk[src+1] << 16 | chunk[src+2] << 8 | chunk[src+3]; + w[src >> 2] = ((uint32_t)chunk[src]) << 24 | chunk[src+1] << 16 | chunk[src+2] << 8 | chunk[src+3]; } for (uint32_t cur = 16; cur < 80; cur++) {
--- a/m68k_core.c Fri Oct 06 00:20:37 2023 -0700 +++ b/m68k_core.c Sat Oct 07 18:04:35 2023 -0700 @@ -1221,8 +1221,8 @@ context->aregs[8] = context->aregs[7]; } context->status = 0x27; - context->aregs[7] = reset_vec[0] << 16 | reset_vec[1]; - uint32_t address = reset_vec[2] << 16 | reset_vec[3]; + context->aregs[7] = ((uint32_t)reset_vec[0]) << 16 | reset_vec[1]; + uint32_t address = ((uint32_t)reset_vec[2]) << 16 | reset_vec[3]; //interrupt mask may have changed so force a sync context->options->sync_components(context, address); start_68k_context(context, address);
--- a/m68k_core.h Fri Oct 06 00:20:37 2023 -0700 +++ b/m68k_core.h Sat Oct 07 18:04:35 2023 -0700 @@ -40,7 +40,7 @@ cpu_options gen; int8_t dregs[8]; - int8_t aregs[8]; + int8_t aregs[9]; int8_t flag_regs[5]; FILE *address_log; code_ptr read_16;
--- a/png.c Fri Oct 06 00:20:37 2023 -0700 +++ b/png.c Sat Oct 07 18:04:35 2023 -0700 @@ -337,7 +337,7 @@ if (*last) { (*last)++; } - return alpha << 24 | red << 16 | green << 8 | blue; + return ((uint32_t)alpha) << 24 | red << 16 | green << 8 | blue; } static filter_fun filters[] = {filter_none, filter_sub, filter_up, filter_avg, filter_paeth};
--- a/render_sdl.c Fri Oct 06 00:20:37 2023 -0700 +++ b/render_sdl.c Sat Oct 07 18:04:35 2023 -0700 @@ -279,9 +279,9 @@ uint32_t render_map_color(uint8_t r, uint8_t g, uint8_t b) { #ifdef USE_GLES - return 255 << 24 | b << 16 | g << 8 | r; + return 255UL << 24 | b << 16 | g << 8 | r; #else - return 255 << 24 | r << 16 | g << 8 | b; + return 255UL << 24 | r << 16 | g << 8 | b; #endif } @@ -425,7 +425,7 @@ //TODO: Fixme for PAL + invalid display mode glTexImage2D(GL_TEXTURE_2D, 0, INTERNAL_FORMAT, tex_width, tex_height, 0, SRC_FORMAT, GL_UNSIGNED_BYTE, texture_buf); } else { - uint32_t blank = 255 << 24; + uint32_t blank = 255UL << 24; glTexImage2D(GL_TEXTURE_2D, 0, INTERNAL_FORMAT, 1, 1, 0, SRC_FORMAT, GL_UNSIGNED_BYTE, &blank); } }