(putvec): Saturate and log error on underflow/overflow, don't just
truncate.
This commit is contained in:
parent
9989c5b3ec
commit
ade0e97856
1 changed files with 11 additions and 2 deletions
|
@ -31,6 +31,7 @@
|
||||||
* Dave Pare, 1989
|
* Dave Pare, 1989
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <limits.h>
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "var.h"
|
#include "var.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
@ -64,8 +65,16 @@ putvec(int class, int *vec, s_char *sp, int ptype)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i <= I_MAX; ++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];
|
dst[i] = vec[i];
|
||||||
|
}
|
||||||
|
|
||||||
return I_MAX;
|
return I_MAX;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue