fmt_ti.c: fix: properly pre-clean the output buffer

Despite it was stated that only the last nibble isn't being
written, some other bytes in the middle of the output buffer
were uninitialized during the first exectution of a queue.

The problem was observed with AddressSanitizer enabled.

Valgrind output:

  $ valgrind --track-origins=yes \
      src/.libs/lt-osmo-gapk \
      -i tests/ref-files/hhgttg_part1_5.s16.ti-efr \
      -f ti-efr -g rawpcm-s16le \
      -o /dev/null -v

 Conditional jump or move depends on uninitialised value(s)
    at 0x52728F2: msb_put_bit (utils.h:39)
    by 0x52728F2: amr_efr_from_canon (fmt_amr.c:45)
    by 0x5270A7D: osmo_gapk_pq_execute (procqueue.c:202)
    by 0x40296A: run (app_osmo_gapk.c:650)
    by 0x40296A: main (app_osmo_gapk.c:778)
  Uninitialised value was created by a heap allocation
    at 0x4C2AB80: malloc (in vgpreload_memcheck-amd64-linux.so)
    by 0x4E3C2A8: talloc_named_const (in libtalloc.so.2.1.5)
    by 0x5270A1B: osmo_gapk_pq_prepare (procqueue.c:180)
    by 0x402940: run (app_osmo_gapk.c:645)
    by 0x402940: main (app_osmo_gapk.c:778)

Change-Id: I79df56dde23702b0eac8e8fdbc0efd270cc0ace4
Related: OS#2934
This commit is contained in:
Vadim Yanitskiy 2018-06-30 21:10:24 +07:00 committed by Harald Welte
parent 58c4bc68c8
commit 664a866d59
1 changed files with 2 additions and 1 deletions

View File

@ -191,7 +191,8 @@ ti_efr_to_canon(uint8_t *dst, const uint8_t *src, unsigned int src_len)
assert(src_len == TI_LEN);
dst[30] = 0x00; /* last nibble won't written, pre-clear it */
/* Pre-clear the output buffer */
memset(dst, 0x00, EFR_CANON_LEN);
for (i=0; i<244; i++) {
int si = i >= 182 ? i+4 : i;