[monitoring-plugins] Fix logic in is_uint64_t to fix type-limit warning

RincewindsHat git at monitoring-plugins.org
Thu Nov 23 10:10:12 CET 2023


 Module: monitoring-plugins
 Branch: master
 Commit: 1b06060cbcc4bf637fcdbfec181d738f01dfed46
 Author: RincewindsHat <12514511+RincewindsHat at users.noreply.github.com>
   Date: Thu Nov 23 00:07:02 2023 +0100
    URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=1b06060

Fix logic in is_uint64_t to fix type-limit warning

---

 plugins/utils.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/plugins/utils.c b/plugins/utils.c
index e871c5f..aff1790 100644
--- a/plugins/utils.c
+++ b/plugins/utils.c
@@ -258,16 +258,25 @@ bool is_int64(char *number, int64_t *target) {
  */
 bool is_uint64(char *number, uint64_t *target) {
 	errno = 0;
-	uint64_t tmp = strtoll(number, NULL, 10);
+	char *endptr = { 0 };
+	unsigned long long tmp = strtoull(number, &endptr, 10);
+
 	if (errno != 0) {
 		return false;
 	}
-	if (tmp < 0 || tmp > UINT64_MAX) {
+
+	if (*endptr != '\0') {
 		return false;
 	}
+
+	if (tmp > UINT64_MAX) {
+		return false;
+	}
+
 	if (target != NULL) {
-		*target = tmp;
+		*target = (uint64_t)tmp;
 	}
+
 	return true;
 }
 



More information about the Commits mailing list