aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2018-06-30 21:10:24 +0700
committerHarald Welte <laforge@gnumonks.org>2018-07-03 15:29:32 +0000
commit664a866d596142f51b08c3b3a59d107eb4bc8883 (patch)
tree46438adc5816a678001d249762e2912ba1c31cd9
parent58c4bc68c81ede69d3fcdd7531760bdc1355b14f (diff)
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
-rw-r--r--src/fmt_ti.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/fmt_ti.c b/src/fmt_ti.c
index d7a1ec7..61c0f8c 100644
--- a/src/fmt_ti.c
+++ b/src/fmt_ti.c
@@ -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;