From 6ed21a4afb714465f2c939ee9512dde5c4ede7f0 Mon Sep 17 00:00:00 2001
From: Michael Davis <michael.davis@cern.ch>
Date: Fri, 24 Jan 2020 13:17:33 +0100
Subject: [PATCH] [cta-admin] Check that uint64 arguments are not negative
 numbers

---
 cmdline/CtaAdminCmd.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/cmdline/CtaAdminCmd.cpp b/cmdline/CtaAdminCmd.cpp
index 03304317b4..edbd961c0f 100644
--- a/cmdline/CtaAdminCmd.cpp
+++ b/cmdline/CtaAdminCmd.cpp
@@ -363,9 +363,11 @@ void CtaAdminCmd::addOption(const Option &option, const std::string &value)
       }
       case Option::OPT_UINT: try {
          auto key = uint64Options.at(option.get_key());
+         int64_t val_int = std::stol(value);
+         if(val_int < 0) throw std::out_of_range("value is negative");
          auto new_opt = admincmd_ptr->add_option_uint64();
          new_opt->set_key(key);
-         new_opt->set_value(std::stoul(value));
+         new_opt->set_value(val_int);
          break;
       } catch(std::invalid_argument &) {
          throw std::runtime_error(value + " is not a valid uint64: " + option.help());
-- 
GitLab