Message ID | 20240106211422.33967-1-maks.mishinFZ@gmail.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Stephen Hemminger |
Headers | show |
Series | maketable: Add check for ZERO for variable sigma2 | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
On Sun, 7 Jan 2024 00:14:22 +0300 Maks Mishin <maks.mishinfz@gmail.com> wrote: > If variable `limit` == 1, then `n` == 1 and then second for-loop will > not do because of variable `sigma2` maybe ZERO. > Added check for ZERO for `sigma2` before it is used as denominator. > > Signed-off-by: Maks Mishin <maks.mishinFZ@gmail.com> > --- > netem/maketable.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/netem/maketable.c b/netem/maketable.c > index ad8620a4..56b1d0bb 100644 > --- a/netem/maketable.c > +++ b/netem/maketable.c > @@ -68,6 +68,10 @@ arraystats(double *x, int limit, double *mu, double *sigma, double *rho) > sigma2 += ((double)x[i-1] - *mu)*((double)x[i-1] - *mu); > > } > + if (sigma2 == 0) { > + perror("Division by zero in top/sigma2"); > + exit(3); > + } > *rho = top/sigma2; > } > This looks like a purely theoretical not practical problem. Just tried the tool with input files likely to create the problem (no data, one sample, etc) and could not reproduce any problem. What input could make this happen?
diff --git a/netem/maketable.c b/netem/maketable.c index ad8620a4..56b1d0bb 100644 --- a/netem/maketable.c +++ b/netem/maketable.c @@ -68,6 +68,10 @@ arraystats(double *x, int limit, double *mu, double *sigma, double *rho) sigma2 += ((double)x[i-1] - *mu)*((double)x[i-1] - *mu); } + if (sigma2 == 0) { + perror("Division by zero in top/sigma2"); + exit(3); + } *rho = top/sigma2; }
If variable `limit` == 1, then `n` == 1 and then second for-loop will not do because of variable `sigma2` maybe ZERO. Added check for ZERO for `sigma2` before it is used as denominator. Signed-off-by: Maks Mishin <maks.mishinFZ@gmail.com> --- netem/maketable.c | 4 ++++ 1 file changed, 4 insertions(+)