f4exb / dsdcc

Digital Speech Decoder (DSD) rewritten as a C++ library
286 stars 60 forks source link

Initialize DMR basic privacy key to zero #48

Closed argilo closed 2 years ago

argilo commented 2 years ago

DMR audio output is sometimes garbled. This occurs because the dmr_bp_key variable is not initialized, and may therefore contain a random value. Valgrind detects the bug:

==1057659== Conditional jump or move depends on uninitialised value(s)
==1057659==    at 0x486F0DD: DSDcc::DSDDMR::BasicPrivacyXOR(unsigned char*, int) (in /home/argilo/prefix_311/lib/libdsdcc.so.1.9.0)
==1057659==    by 0x48700FD: DSDcc::DSDDMR::processVoiceDibit(unsigned char) (in /home/argilo/prefix_311/lib/libdsdcc.so.1.9.0)
==1057659==    by 0x48708CE: DSDcc::DSDDMR::processVoiceFirstHalf(unsigned int) (in /home/argilo/prefix_311/lib/libdsdcc.so.1.9.0)
==1057659==    by 0x48719A5: DSDcc::DSDDecoder::processFrameInit() (in /home/argilo/prefix_311/lib/libdsdcc.so.1.9.0)
==1057659==    by 0x10AD00: main (in /home/argilo/prefix_311/bin/dsdccx)

Initializing this field to zero fixes the problem.