aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKyle Keen <keenerd@gmail.com>2012-09-04 08:09:30 -0400
committerSteve Markgraf <steve@steve-m.de>2012-09-10 18:51:07 +0200
commitc792c4aeac7581be5294dde35e5cabc5b38e1101 (patch)
treec383b5b9c6fcffa55e22ccb3df00b6520fd47124 /src
parent0c3c356d19ce39655dc9f94c94d68d2ab16d2152 (diff)
rtl_fm: bugs found by Axiomatic, alkw0ia and cgommer
Signed-off-by: Steve Markgraf <steve@steve-m.de>
Diffstat (limited to 'src')
-rw-r--r--src/rtl_fm.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/rtl_fm.c b/src/rtl_fm.c
index 0350d8b..eb7190a 100644
--- a/src/rtl_fm.c
+++ b/src/rtl_fm.c
@@ -187,10 +187,10 @@ void build_fir(struct fm_state *fm)
{
int i, len;
len = fm->downsample;
- for(i = 0; i < len; i++) {
+ for(i = 0; i < (len/2); i++) {
fm->fir[i] = i;
}
- for(i = len-1; i <= 0; i--) {
+ for(i = len-1; i >= (len/2); i--) {
fm->fir[i] = len - i;
}
fm->fir_sum = 0;
@@ -311,6 +311,8 @@ int mad(int *samples, int len, int step)
/* mean average deviation */
{
int i=0, sum=0, ave=0;
+ if (len == 0)
+ {return 0;}
for (i=0; i<len; i+=step) {
sum += samples[i];
}
@@ -319,7 +321,7 @@ int mad(int *samples, int len, int step)
for (i=0; i<len; i+=step) {
sum += abs(samples[i] - ave);
}
- return sum / (len * step);
+ return sum / (len / step);
}
int post_squelch(struct fm_state *fm)