Introduction
Introduction Statistics Contact Development Disclaimer Help
tuse proper secure idiom for snprintf - granular - granular dynamics simulation
git clone git://src.adamsgaard.dk/granular
Log
Files
Refs
README
LICENSE
---
commit 40ba3713f2f936b47272087219ed0043b7baa995
parent 0fe34fa5175dd35819839ff25ac866300fa82713
Author: Anders Damsgaard <[email protected]>
Date: Thu, 22 Apr 2021 11:57:40 +0200
use proper secure idiom for snprintf
Diffstat:
M arrays.c | 6 ++----
M util.c | 25 ++++++++++++++++++++-----
2 files changed, 22 insertions(+), 9 deletions(-)
---
diff --git a/arrays.c b/arrays.c
t@@ -8,11 +8,9 @@
void
check_magnitude(const char *func_name, int limit, int value)
{
- if (value < limit) {
- fprintf(stderr, "error: %s: input size %d is less than %d\n",
+ if (value < limit)
+ errx("%s: input size %d is less than %d\n",
func_name, value, limit);
- exit(1);
- }
}
/* Translate a i,j,k index in grid with dimensions nx, ny, nz into a
diff --git a/util.c b/util.c
t@@ -18,10 +18,13 @@ warn_parameter_value(const char message[],
void
check_float(const char name[], const double value, int *status)
{
+ int ret;
char message[100];
if (isnan(value)) {
- snprintf(message, sizeof(message), "%s is NaN", name);
+ ret = snprintf(message, sizeof(message), "%s is NaN", name);
+ if (ret < 0 || ret >= sizeof(buffer))
+ err("%s: message parsing", __func__);
warn_parameter_value(message, value, status);
*status = 1;
} else if (isinf(value)) {
t@@ -34,11 +37,14 @@ check_float(const char name[], const double value, int *st…
void
check_float_non_negative(const char name[], const double value, int *status)
{
+ int ret;
char message[100];
check_float(name, value, status);
if (value < 0.0) {
- snprintf(message, sizeof(message), "%s is negative", name);
+ ret = snprintf(message, sizeof(message), "%s is negative", nam…
+ if (ret < 0 || ret >= sizeof(buffer))
+ err("%s: message parsing", __func__);
warn_parameter_value(message, value, status);
*status = 1;
}
t@@ -47,11 +53,14 @@ check_float_non_negative(const char name[], const double v…
void
check_float_positive(const char name[], const double value, int *status)
{
+ int ret;
char message[100];
check_float(name, value, status);
if (value <= 0.0) {
- snprintf(message, sizeof(message), "%s is not positive", name);
+ ret = snprintf(message, sizeof(message), "%s is not positive",…
+ if (ret < 0 || ret >= sizeof(buffer))
+ err("%s: message parsing", __func__);
warn_parameter_value(message, value, status);
*status = 1;
}
t@@ -60,10 +69,13 @@ check_float_positive(const char name[], const double value…
void
check_int_bool(const char name[], const int value, int *status)
{
+ int ret;
char message[100];
if (value < 0 || value > 1) {
- snprintf(message, sizeof(message), "%s is not 0 or 1", name);
+ ret = snprintf(message, sizeof(message), "%s is not 0 or 1", n…
+ if (ret < 0 || ret >= sizeof(buffer))
+ err("%s: message parsing", __func__);
warn_parameter_value(message, (double)value, status);
*status = 1;
}
t@@ -72,10 +84,13 @@ check_int_bool(const char name[], const int value, int *st…
void
check_int_non_negative(const char name[], const int value, int *status)
{
+ int ret;
char message[100];
if (value < 0) {
- snprintf(message, sizeof(message), "%s is negative", name);
+ ret = snprintf(message, sizeof(message), "%s is negative", nam…
+ if (ret < 0 || ret >= sizeof(buffer))
+ err("%s: message parsing", __func__);
warn_parameter_value(message, (double)value, status);
*status = 1;
}
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.