]> granicus.if.org Git - linux-pam/commitdiff
pam_succeed_if: Use long long type for numeric values
authorTomas Mraz <tmraz@fedoraproject.org>
Fri, 17 Oct 2014 06:34:24 +0000 (08:34 +0200)
committerTomas Mraz <tmraz@fedoraproject.org>
Fri, 17 Oct 2014 06:34:24 +0000 (08:34 +0200)
The currently used long with additional conversion to int is
too small for uids and gids.

modules/pam_succeed_if/pam_succeed_if.c (evaluate_num): Replace
strtol() with strtoll() and int with long long in the parameters
of comparison functions.

modules/pam_succeed_if/pam_succeed_if.c

index 32a7373859017dcc22272d85ea254929e0d6a2a8..98a847453bd0207bcbca1baa58391d093c662793 100644 (file)
  * PAM_SERVICE_ERR if the arguments can't be parsed as numbers. */
 static int
 evaluate_num(const pam_handle_t *pamh, const char *left,
-            const char *right, int (*cmp)(int, int))
+            const char *right, int (*cmp)(long long, long long))
 {
-       long l, r;
+       long long l, r;
        char *p;
        int ret = PAM_SUCCESS;
 
        errno = 0;
-       l = strtol(left, &p, 0);
+       l = strtoll(left, &p, 0);
        if ((p == NULL) || (*p != '\0') || errno) {
                pam_syslog(pamh, LOG_INFO, "\"%s\" is not a number", left);
                ret = PAM_SERVICE_ERR;
        }
 
-       r = strtol(right, &p, 0);
+       r = strtoll(right, &p, 0);
        if ((p == NULL) || (*p != '\0') || errno) {
                pam_syslog(pamh, LOG_INFO, "\"%s\" is not a number", right);
                ret = PAM_SERVICE_ERR;
@@ -96,32 +96,32 @@ evaluate_num(const pam_handle_t *pamh, const char *left,
 
 /* Simple numeric comparison callbacks. */
 static int
-eq(int i, int j)
+eq(long long i, long long j)
 {
        return i == j;
 }
 static int
-ne(int i, int j)
+ne(long long i, long long j)
 {
        return i != j;
 }
 static int
-lt(int i, int j)
+lt(long long i, long long j)
 {
        return i < j;
 }
 static int
-le(int i, int j)
+le(long long i, long long j)
 {
        return lt(i, j) || eq(i, j);
 }
 static int
-gt(int i, int j)
+gt(long long i, long long j)
 {
        return i > j;
 }
 static int
-ge(int i, int j)
+ge(long long i, long long j)
 {
        return gt(i, j) || eq(i, j);
 }