uwrap: Fix integer overflowed argument
authorAndreas Schneider <asn@samba.org>
Tue, 1 Aug 2017 06:11:28 +0000 (08:11 +0200)
committerAndreas Schneider <asn@samba.org>
Tue, 1 Aug 2017 13:13:00 +0000 (15:13 +0200)
The previous fix did not address the conversion from 64bit to 32bit.

CID 165232

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
src/uid_wrapper.c

index b3d12c570278a059b8ea036ed2582d6c2555e06a..9bd154a7be1cc8997ea148479efe8fc5241528e4 100644 (file)
@@ -1025,11 +1025,19 @@ static void uwrap_init_env(struct uwrap_thread *id)
 
        env = getenv("UID_WRAPPER_INITIAL_GROUPS_COUNT");
        if (env != NULL && env[0] != '\0') {
-               ngroups = strtol(env, (char **)NULL, 10);
+               char *endp = NULL;
+               long n;
+
+               n = strtol(env, &endp, 10);
+               if (env == endp) {
+                       ngroups = 0;
+               } else if (n > 0 && n < GROUP_MAX_COUNT) {
+                       ngroups = (int)n;
+               }
                unsetenv("UID_WRAPPER_INITIAL_GROUPS_COUNT");
        }
 
-       if (ngroups > 0 && ngroups < GROUP_MAX_COUNT) {
+       if (ngroups > 0) {
                int i = 0;
 
                id->ngroups = 0;