fix some oss-fuzz (#1224)

* fix oss-fuzz 18138.

* fix oss-fuzz 20079.

* fix oss-fuzz 20209.

* fix oss-fuzz 20210.

* fix oss-fuzz 20262.

* rollback.

* rollback.

* fix oss-fuzz 20079.

* fix oss-fuzz 20179.

* fix oss-fuzz 20195.

* fix oss-fuzz 20206.

* fix oss-fuzz 20207.

* fix oss-fuzz 20265.

* fix oss-fuzz 20285.

* fix oss-fuzz 20868.

* fix oss-fuzz 20908.

* fix oss-fuzz 20909.

* fix oss-fuzz 20914.

* fix oss-fuzz 20922.

* fix oss-fuzz 20928.

* remove warnigs.

* fix oss-fuzz 20961.

* fix oss-fuzz 21005.

* remove clang warnings.

* fix oss-fuzz 21043.

* fix oss-fuzz 21047.

* fix oss-fuzz 21050.

* fix oss-fuzz 21219.
This commit is contained in:
Chen Huitao 2020-03-24 16:23:04 +08:00 committed by GitHub
parent 8ff326a2a3
commit 930cb9ada8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 17 additions and 17 deletions

View File

@ -608,7 +608,7 @@ NEON_POP(pmax_u16, neon_u16, 2)
#undef NEON_FN #undef NEON_FN
#define NEON_FN(dest, src1, src2) \ #define NEON_FN(dest, src1, src2) \
dest = (src1 > src2) ? (src1 - src2) : (src2 - src1) dest = (src1 > src2) ? ((int64_t)src1 - (int64_t)src2) : ((int64_t)src2 - (int64_t)src1)
NEON_VOP(abd_s8, neon_s8, 4) NEON_VOP(abd_s8, neon_s8, 4)
NEON_VOP(abd_u8, neon_u8, 4) NEON_VOP(abd_u8, neon_u8, 4)
NEON_VOP(abd_s16, neon_s16, 2) NEON_VOP(abd_s16, neon_s16, 2)
@ -1052,7 +1052,7 @@ uint64_t HELPER(neon_qrshl_u64)(CPUARMState *env, uint64_t val, uint64_t shiftop
if (tmp >= (ssize_t)sizeof(src1) * 8) { \ if (tmp >= (ssize_t)sizeof(src1) * 8) { \
if (src1) { \ if (src1) { \
SET_QC(); \ SET_QC(); \
dest = (1 << (sizeof(src1) * 8 - 1)); \ dest = (uint32_t)(1U << (sizeof(src1) * 8 - 1)); \
if (src1 > 0) { \ if (src1 > 0) { \
dest--; \ dest--; \
} \ } \
@ -1067,7 +1067,7 @@ uint64_t HELPER(neon_qrshl_u64)(CPUARMState *env, uint64_t val, uint64_t shiftop
dest = ((uint64_t)src1) << tmp; \ dest = ((uint64_t)src1) << tmp; \
if ((dest >> tmp) != src1) { \ if ((dest >> tmp) != src1) { \
SET_QC(); \ SET_QC(); \
dest = (uint32_t)(1 << (sizeof(src1) * 8 - 1)); \ dest = (uint32_t)(1U << (sizeof(src1) * 8 - 1)); \
if (src1 > 0) { \ if (src1 > 0) { \
dest--; \ dest--; \
} \ } \
@ -1133,7 +1133,7 @@ uint64_t HELPER(neon_qrshl_s64)(CPUARMState *env, uint64_t valop, uint64_t shift
} }
} else { } else {
int64_t tmp = val; int64_t tmp = val;
val <<= shift; val = (uint64_t)val << (shift & 0x3f);
if ((val >> shift) != tmp) { if ((val >> shift) != tmp) {
SET_QC(); SET_QC();
val = (tmp >> 63) ^ ~SIGNBIT64; val = (tmp >> 63) ^ ~SIGNBIT64;

View File

@ -6144,7 +6144,7 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
val = 0; val = 0;
for (n = 0; n < 4; n++) { for (n = 0; n < 4; n++) {
if (imm & (1 << (n + (pass & 1) * 4))) if (imm & (1 << (n + (pass & 1) * 4)))
val |= 0xff << (n * 8); val |= 0xffU << (n * 8);
} }
tcg_gen_movi_i32(tcg_ctx, tmp, val); tcg_gen_movi_i32(tcg_ctx, tmp, val);
} else { } else {
@ -11127,7 +11127,7 @@ static void disas_thumb_insn(CPUARMState *env, DisasContext *s) // qq
/* jump to the offset */ /* jump to the offset */
val = (uint32_t)s->pc + 2; val = (uint32_t)s->pc + 2;
offset = ((int32_t)((uint32_t)insn << 24)) >> 24; offset = ((int32_t)((uint32_t)insn << 24)) >> 24;
val += offset << 1; val += (int32_t)((uint32_t)offset << 1);
gen_jmp(s, val); gen_jmp(s, val);
break; break;
@ -11140,7 +11140,7 @@ static void disas_thumb_insn(CPUARMState *env, DisasContext *s) // qq
/* unconditional branch */ /* unconditional branch */
val = (uint32_t)s->pc; val = (uint32_t)s->pc;
offset = ((int32_t)((uint32_t)insn << 21)) >> 21; offset = ((int32_t)((uint32_t)insn << 21)) >> 21;
val += (offset << 1) + 2; val += (int32_t)((uint32_t)offset << 1) + 2;
gen_jmp(s, val); gen_jmp(s, val);
break; break;

View File

@ -1471,7 +1471,7 @@ void glue(helper_phsubd, SUFFIX)(CPUX86State *env, Reg *d, Reg *s)
{ {
d->L(0) = (int32_t)((int64_t)d->L(0) - (int64_t)d->L(1)); d->L(0) = (int32_t)((int64_t)d->L(0) - (int64_t)d->L(1));
XMM_ONLY(d->L(1) = (int32_t)((int64_t)d->L(2) - (int64_t)d->L(3))); XMM_ONLY(d->L(1) = (int32_t)((int64_t)d->L(2) - (int64_t)d->L(3)));
d->L((1 << SHIFT) + 0) = (uint32_t)((int32_t)s->L(0) - (int32_t)s->L(1)); d->L((1 << SHIFT) + 0) = (uint32_t)((int64_t)s->L(0) - (int64_t)s->L(1));
XMM_ONLY(d->L(3) = (int32_t)s->L(2) - (int32_t)s->L(3)); XMM_ONLY(d->L(3) = (int32_t)s->L(2) - (int32_t)s->L(3));
} }

View File

@ -210,8 +210,8 @@ void HELPER(divs)(CPUM68KState *env, uint32_t word)
if (den == 0) { if (den == 0) {
raise_exception(env, EXCP_DIV0); raise_exception(env, EXCP_DIV0);
} }
quot = num / den; quot = (int64_t)num / den;
rem = num % den; rem = (int64_t)num % den;
flags = 0; flags = 0;
if (word && quot != (int16_t)quot) if (word && quot != (int16_t)quot)
flags |= CCF_V; flags |= CCF_V;

View File

@ -1170,7 +1170,7 @@ DISAS_INSN(bitop_im)
bitnum &= 7; bitnum &= 7;
else else
bitnum &= 31; bitnum &= 31;
mask = 1 << bitnum; mask = 1U << bitnum;
tmp = tcg_temp_new(tcg_ctx); tmp = tcg_temp_new(tcg_ctx);
assert (CCF_Z == (1 << 2)); assert (CCF_Z == (1 << 2));

View File

@ -3394,7 +3394,7 @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
{ {
TCGv t2 = tcg_temp_new(tcg_ctx); TCGv t2 = tcg_temp_new(tcg_ctx);
TCGv t3 = tcg_temp_new(tcg_ctx); TCGv t3 = tcg_temp_new(tcg_ctx);
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1LL << 63); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1ULL << 63);
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL);
tcg_gen_and_tl(tcg_ctx, t2, t2, t3); tcg_gen_and_tl(tcg_ctx, t2, t2, t3);
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0);
@ -3411,7 +3411,7 @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
{ {
TCGv t2 = tcg_temp_new(tcg_ctx); TCGv t2 = tcg_temp_new(tcg_ctx);
TCGv t3 = tcg_temp_new(tcg_ctx); TCGv t3 = tcg_temp_new(tcg_ctx);
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1LL << 63); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1ULL << 63);
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL);
tcg_gen_and_tl(tcg_ctx, t2, t2, t3); tcg_gen_and_tl(tcg_ctx, t2, t2, t3);
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0);
@ -3574,7 +3574,7 @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
{ {
TCGv t2 = tcg_temp_new(tcg_ctx); TCGv t2 = tcg_temp_new(tcg_ctx);
TCGv t3 = tcg_temp_new(tcg_ctx); TCGv t3 = tcg_temp_new(tcg_ctx);
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1LL << 63); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1ULL << 63);
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL);
tcg_gen_and_tl(tcg_ctx, t2, t2, t3); tcg_gen_and_tl(tcg_ctx, t2, t2, t3);
tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0);
@ -3983,7 +3983,7 @@ static void gen_loongson_integer(DisasContext *ctx, uint32_t opc,
tcg_gen_movi_tl(tcg_ctx, *cpu_gpr[rd], 0); tcg_gen_movi_tl(tcg_ctx, *cpu_gpr[rd], 0);
tcg_gen_br(tcg_ctx, l3); tcg_gen_br(tcg_ctx, l3);
gen_set_label(tcg_ctx, l1); gen_set_label(tcg_ctx, l1);
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t0, -1LL << 63, l2); tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t0, -1ULL << 63, l2);
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t1, -1LL, l2); tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t1, -1LL, l2);
tcg_gen_mov_tl(tcg_ctx, *cpu_gpr[rd], t0); tcg_gen_mov_tl(tcg_ctx, *cpu_gpr[rd], t0);
tcg_gen_br(tcg_ctx, l3); tcg_gen_br(tcg_ctx, l3);
@ -4014,7 +4014,7 @@ static void gen_loongson_integer(DisasContext *ctx, uint32_t opc,
int l2 = gen_new_label(tcg_ctx); int l2 = gen_new_label(tcg_ctx);
int l3 = gen_new_label(tcg_ctx); int l3 = gen_new_label(tcg_ctx);
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_EQ, t1, 0, l1); tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_EQ, t1, 0, l1);
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t0, -1LL << 63, l2); tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t0, -1ULL << 63, l2);
tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t1, -1LL, l2); tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t1, -1LL, l2);
gen_set_label(tcg_ctx, l1); gen_set_label(tcg_ctx, l1);
tcg_gen_movi_tl(tcg_ctx, *cpu_gpr[rd], 0); tcg_gen_movi_tl(tcg_ctx, *cpu_gpr[rd], 0);

View File

@ -132,7 +132,7 @@ int64_t strtosz_suffix_unit(const char *nptr, char **end,
if (mul == 1 && mul_required) { if (mul == 1 && mul_required) {
goto fail; goto fail;
} }
if ((val * mul >= INT64_MAX) || val < 0) { if ((val * mul >= (double)INT64_MAX) || val < 0) {
retval = -ERANGE; retval = -ERANGE;
goto fail; goto fail;
} }