Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73200921 authored by Marco Nelissen's avatar Marco Nelissen
Browse files

Fix more potential overflows in amrwbenc

Bug: 28268307
Change-Id: Ibe32bee8c73950e3a9cae13bd4b516f9c7428673
parent 5c93a065
Loading
Loading
Loading
Loading
+36 −36
Original line number Original line Diff line number Diff line
@@ -857,23 +857,23 @@ void cor_h_vec_30(
        p2 = &vec[pos];
        p2 = &vec[pos];
        for (j=pos;j < L_SUBFR; j++)
        for (j=pos;j < L_SUBFR; j++)
        {
        {
            L_sum1 += *p1 * *p2;
            L_sum1 = L_add(L_sum1, *p1 * *p2);
            p2-=3;
            p2-=3;
            L_sum2 += *p1++ * *p2;
            L_sum2 = L_add(L_sum2, *p1++ * *p2);
            p2+=4;
            p2+=4;
        }
        }
        p2-=3;
        p2-=3;
        L_sum2 += *p1++ * *p2++;
        L_sum2 = L_add(L_sum2, *p1++ * *p2++);
        L_sum2 += *p1++ * *p2++;
        L_sum2 = L_add(L_sum2, *p1++ * *p2++);
        L_sum2 += *p1++ * *p2++;
        L_sum2 = L_add(L_sum2, *p1++ * *p2++);


        L_sum1 = (L_sum1 << 2);
        L_sum1 = L_shl(L_sum1, 2);
        L_sum2 = (L_sum2 << 2);
        L_sum2 = L_shl(L_sum2, 2);


        corr = vo_round(L_sum1);
        corr = voround(L_sum1);
        *cor_x++ = vo_mult(corr, sign[pos]) + (*p0++);
        *cor_x++ = mult(corr, sign[pos]) + (*p0++);
        corr = vo_round(L_sum2);
        corr = voround(L_sum2);
        *cor_y++ = vo_mult(corr, sign[pos-3]) + (*p3++);
        *cor_y++ = mult(corr, sign[pos-3]) + (*p3++);
        pos += STEP;
        pos += STEP;


        L_sum1 = L_sum2 = 0L;
        L_sum1 = L_sum2 = 0L;
@@ -881,23 +881,23 @@ void cor_h_vec_30(
        p2 = &vec[pos];
        p2 = &vec[pos];
        for (j=pos;j < L_SUBFR; j++)
        for (j=pos;j < L_SUBFR; j++)
        {
        {
            L_sum1 += *p1 * *p2;
            L_sum1 = L_add(L_sum1, *p1 * *p2);
            p2-=3;
            p2-=3;
            L_sum2 += *p1++ * *p2;
            L_sum2 = L_add(L_sum2, *p1++ * *p2);
            p2+=4;
            p2+=4;
        }
        }
        p2-=3;
        p2-=3;
        L_sum2 += *p1++ * *p2++;
        L_sum2 = L_add(L_sum2, *p1++ * *p2++);
        L_sum2 += *p1++ * *p2++;
        L_sum2 = L_add(L_sum2, *p1++ * *p2++);
        L_sum2 += *p1++ * *p2++;
        L_sum2 = L_add(L_sum2, *p1++ * *p2++);


        L_sum1 = (L_sum1 << 2);
        L_sum1 = L_shl(L_sum1, 2);
        L_sum2 = (L_sum2 << 2);
        L_sum2 = L_shl(L_sum2, 2);


        corr = vo_round(L_sum1);
        corr = voround(L_sum1);
        *cor_x++ = vo_mult(corr, sign[pos]) + (*p0++);
        *cor_x++ = mult(corr, sign[pos]) + (*p0++);
        corr = vo_round(L_sum2);
        corr = voround(L_sum2);
        *cor_y++ = vo_mult(corr, sign[pos-3]) + (*p3++);
        *cor_y++ = mult(corr, sign[pos-3]) + (*p3++);
        pos += STEP;
        pos += STEP;
    }
    }
    return;
    return;
@@ -929,16 +929,16 @@ void cor_h_vec_012(
        p2 = &vec[pos];
        p2 = &vec[pos];
        for (j=62-pos ;j >= 0; j--)
        for (j=62-pos ;j >= 0; j--)
        {
        {
            L_sum1 += *p1 * *p2++;
            L_sum1 = L_add(L_sum1, *p1 * *p2++);
            L_sum2 += *p1++ * *p2;
            L_sum2 = L_add(L_sum2, *p1++ * *p2);
        }
        }
        L_sum1 += *p1 * *p2;
        L_sum1 = L_add(L_sum1, *p1 * *p2);
        L_sum1 = (L_sum1 << 2);
        L_sum1 = L_shl(L_sum1, 2);
        L_sum2 = (L_sum2 << 2);
        L_sum2 = L_shl(L_sum2, 2);


        corr = (L_sum1 + 0x8000) >> 16;
        corr = voround(L_sum1);
        cor_x[i] = vo_mult(corr, sign[pos]) + (*p0++);
        cor_x[i] = vo_mult(corr, sign[pos]) + (*p0++);
        corr = (L_sum2 + 0x8000) >> 16;
        corr = voround(L_sum2);
        cor_y[i] = vo_mult(corr, sign[pos + 1]) + (*p3++);
        cor_y[i] = vo_mult(corr, sign[pos + 1]) + (*p3++);
        pos += STEP;
        pos += STEP;


@@ -947,16 +947,16 @@ void cor_h_vec_012(
        p2 = &vec[pos];
        p2 = &vec[pos];
        for (j= 62-pos;j >= 0; j--)
        for (j= 62-pos;j >= 0; j--)
        {
        {
            L_sum1 += *p1 * *p2++;
            L_sum1 = L_add(L_sum1, *p1 * *p2++);
            L_sum2 += *p1++ * *p2;
            L_sum2 = L_add(L_sum2, *p1++ * *p2);
        }
        }
        L_sum1 += *p1 * *p2;
        L_sum1 = L_add(L_sum1, *p1 * *p2);
        L_sum1 = (L_sum1 << 2);
        L_sum1 = L_shl(L_sum1, 2);
        L_sum2 = (L_sum2 << 2);
        L_sum2 = L_shl(L_sum2, 2);


        corr = (L_sum1 + 0x8000) >> 16;
        corr = voround(L_sum1);
        cor_x[i+1] = vo_mult(corr, sign[pos]) + (*p0++);
        cor_x[i+1] = vo_mult(corr, sign[pos]) + (*p0++);
        corr = (L_sum2 + 0x8000) >> 16;
        corr = voround(L_sum2);
        cor_y[i+1] = vo_mult(corr, sign[pos + 1]) + (*p3++);
        cor_y[i+1] = vo_mult(corr, sign[pos + 1]) + (*p3++);
        pos += STEP;
        pos += STEP;
    }
    }