[uWSGI] move away from atoi

Riccardo Magliocchetti riccardo.magliocchetti at gmail.com
Sun Apr 5 23:48:09 CEST 2015


Hello,

atoi is deprecated in favour of strtol because its behaviour is undefined in 
case it cannot represent the string value as an integer.
So to avoid this i was thinking of introducing an uwsgi_atoi wrapper over strtol 
like the one below and convert atoi users to uwsgi_atoi. What do you think?

diff --git a/core/utils.c b/core/utils.c
index 0715b5b..123e501 100755
--- a/core/utils.c
+++ b/core/utils.c
@@ -4574,3 +4574,23 @@ int uwsgi_versionsort(const struct dirent **da, const 
struct dirent **db) {
          }
  }
  #endif
+
+int uwsgi_atoi(char *str) {
+       char *end;
+       long int num = strtol(str, &end, 10);
+       if (*end) {
+               uwsgi_error("uwsgi_atoi() unconverted string");
+               goto exit;
+       }
+       if (num == LONG_MIN || num < INT_MIN) {
+               uwsgi_error("uwsgi_atoi() underflow");
+               goto exit;
+       }
+       if (num == LONG_MAX || num > INT_MAX) {
+               uwsgi_error("uwsgi_atoi() overflow");
+               goto exit;
+       }
+       return (int) num;
+exit:
+       exit(1);
+}

-- 
Riccardo Magliocchetti
@rmistaken


More information about the uWSGI mailing list