From 306f202c5e01cd9acd27e5a708340bbfac6ccd3a Mon Sep 17 00:00:00 2001 From: dj2ls Date: Fri, 7 Jan 2022 13:13:18 +0100 Subject: [PATCH] avoid buffer overflow #106 this is not a solution, but increases app stability beacuse we are going to a void a buffer overflow. Maybe we need to think about a mode preseelction before transmission starts --- tnc/modem.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tnc/modem.py b/tnc/modem.py index aef3f8e7..a73a725c 100644 --- a/tnc/modem.py +++ b/tnc/modem.py @@ -217,10 +217,17 @@ class RF(): x = np.frombuffer(data_in48k, dtype=np.int16) x = self.resampler.resample48_to_8(x) - self.datac0_buffer.push(x) - self.datac1_buffer.push(x) - self.datac3_buffer.push(x) - self.fft_data += bytes(x) + # avoid buffer overflow + if not self.datac0_buffer.nbuffer+len(x) > self.datac0_buffer.size: + self.datac0_buffer.push(x) + # avoid buffer overflow + if not self.datac1_buffer.nbuffer+len(x) > self.datac1_buffer.size: + self.datac1_buffer.push(x) + # avoid buffer overflow + if not self.datac3_buffer.nbuffer+len(x) > self.datac3_buffer.size: + self.datac3_buffer.push(x) + + self.fft_data = bytes(x) if self.modoutqueue.empty(): data_out48k = bytes(self.AUDIO_FRAMES_PER_BUFFER_TX*2)