From 7c5b4f82fc79bf04d679d4e4427525d63cdd7614 Mon Sep 17 00:00:00 2001 From: Martin Kepplinger Date: Tue, 25 Apr 2017 19:03:25 +0200 Subject: [PATCH] plugins: filters: check for read_mt() availability In case users use raw modules that don't implement ts_read(), we must fail gracefully. --- plugins/debounce.c | 3 +++ plugins/dejitter.c | 3 +++ plugins/iir.c | 3 +++ plugins/linear.c | 3 +++ plugins/median.c | 3 +++ plugins/pthres.c | 3 +++ plugins/skip.c | 3 +++ plugins/variance.c | 3 +++ 8 files changed, 24 insertions(+) diff --git a/plugins/debounce.c b/plugins/debounce.c index 41adfb81..b60313a9 100644 --- a/plugins/debounce.c +++ b/plugins/debounce.c @@ -131,6 +131,9 @@ static int debounce_read_mt(struct tslib_module_info *info, struct ts_sample_mt p->current_max_slots = max_slots; } + if (!info->next->ops->read_mt) + return -ENOSYS; + ret = info->next->ops->read_mt(info->next, samp, max_slots, nr_samples); if (ret < 0) return ret; diff --git a/plugins/dejitter.c b/plugins/dejitter.c index f2f2f2f8..27dc4d44 100644 --- a/plugins/dejitter.c +++ b/plugins/dejitter.c @@ -193,6 +193,9 @@ static int dejitter_read_mt(struct tslib_module_info *info, int ret; int i, j; + if (!info->next->ops->read_mt) + return -ENOSYS; + ret = info->next->ops->read_mt(info->next, samp, max_slots, nr); if (ret < 0) return ret; diff --git a/plugins/iir.c b/plugins/iir.c index 8f375b49..245515a3 100644 --- a/plugins/iir.c +++ b/plugins/iir.c @@ -132,6 +132,9 @@ static int iir_read_mt(struct tslib_module_info *info, iir->slots = max_slots; } + if (!info->next->ops->read_mt) + return -ENOSYS; + ret = info->next->ops->read_mt(info->next, samp, max_slots, nr); if (ret < 0) return ret; diff --git a/plugins/linear.c b/plugins/linear.c index 8bd17afb..75872fa7 100644 --- a/plugins/linear.c +++ b/plugins/linear.c @@ -94,6 +94,9 @@ static int linear_read_mt(struct tslib_module_info *info, int i; int nr; + if (!info->next->ops->read_mt) + return -ENOSYS; + ret = info->next->ops->read_mt(info->next, samp, max_slots, nr_samples); if (ret < 0) return ret; diff --git a/plugins/median.c b/plugins/median.c index 00b3e1ad..c10d5bcd 100644 --- a/plugins/median.c +++ b/plugins/median.c @@ -199,6 +199,9 @@ static int median_read_mt(struct tslib_module_info *inf, int ret; int i, j; + if (!inf->next->ops->read_mt) + return -ENOSYS; + ret = inf->next->ops->read_mt(inf->next, samp, max_slots, nr); if (ret < 0) return ret; diff --git a/plugins/pthres.c b/plugins/pthres.c index 49d3fe49..0b4de487 100644 --- a/plugins/pthres.c +++ b/plugins/pthres.c @@ -143,6 +143,9 @@ static int pthres_read_mt(struct tslib_module_info *info, p->current_max_slots = max_slots; } + if (!info->next->ops->read_mt) + return -ENOSYS; + ret = info->next->ops->read_mt(info->next, samp, max_slots, nr_samples); if (ret < 0) return ret; diff --git a/plugins/skip.c b/plugins/skip.c index 56714cbe..c68520fc 100644 --- a/plugins/skip.c +++ b/plugins/skip.c @@ -236,6 +236,9 @@ static int skip_read_mt(struct tslib_module_info *info, skip->slots = max_slots; } + if (!info->next->ops->read_mt) + return -ENOSYS; + ret = info->next->ops->read_mt(info->next, samp, max_slots, nr); if (ret < 0) return ret; diff --git a/plugins/variance.c b/plugins/variance.c index e729294a..0154f1dc 100644 --- a/plugins/variance.c +++ b/plugins/variance.c @@ -150,6 +150,9 @@ static int variance_read_mt(struct tslib_module_info *info, short pen_down = 1; int ret; + if (!info->next->ops->read_mt) + return -ENOSYS; + if (var->samp == NULL) { var->samp = calloc(nr, sizeof(struct ts_sample)); if (!var->samp)