From ade0e97856ddfd6a83852a399c49871c8497288f Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 5 Mar 2004 07:59:29 +0000 Subject: [PATCH] (putvec): Saturate and log error on underflow/overflow, don't just truncate. --- src/lib/common/getvar.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/lib/common/getvar.c b/src/lib/common/getvar.c index 8434389f..c1b30ba7 100644 --- a/src/lib/common/getvar.c +++ b/src/lib/common/getvar.c @@ -31,6 +31,7 @@ * Dave Pare, 1989 */ +#include #include "misc.h" #include "var.h" #include "file.h" @@ -64,8 +65,16 @@ putvec(int class, int *vec, s_char *sp, int ptype) return 0; } - for (i = 0; i <= I_MAX; ++i) - dst[i] = vec[i]; + for (i = 0; i <= I_MAX; ++i) { + if (vec[i] < 0) { + logerror("putvec: item %d underflow", i); + dst[i] = 0; + } else if (vec[i] > SHRT_MAX) { + logerror("putvec: item %d overflow", i); + dst[i] = SHRT_MAX; + } else + dst[i] = vec[i]; + } return I_MAX; }