]> granicus.if.org Git - sudo/commitdiff
Extend atobool() so we can use it in the LDAP code.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 3 Jun 2010 12:50:02 +0000 (08:50 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 3 Jun 2010 12:50:02 +0000 (08:50 -0400)
common/atobool.c
plugins/sudoers/ldap.c

index e442b49f4260f8c4ee90ef6699932fc8f7c09cde..a8b0352ed3a14d6ede149a33ed7fe42944fcad93 100644 (file)
 int
 atobool(const char *str)
 {
-    if (strcasecmp(str, "true") == 0 || strcmp(str, "1") == 0)
-       return 1;
-    if (strcasecmp(str, "false") == 0 || strcmp(str, "0") == 0)
-       return 0;
+    switch (*str) {
+       case '0':
+       case '1':
+           if (str[1] == '\0')
+               return *str - '0';
+           break;
+       case 'y':
+       case 'Y':
+           if (strcasecmp(str, "yes") == 0)
+               return 1;
+           break;
+       case 't':
+       case 'T':
+           if (strcasecmp(str, "true") == 0)
+               return 1;
+           break;
+       case 'o':
+       case 'O':
+           if (strcasecmp(str, "on") == 0)
+               return 1;
+           if (strcasecmp(str, "off") == 0)
+               return 0;
+           break;
+       case 'n':
+       case 'N':
+           if (strcasecmp(str, "no") == 0)
+               return 0;
+           break;
+       case 'f':
+       case 'F':
+           if (strcasecmp(str, "false") == 0)
+               return 0;
+           break;
+    }
     return -1;
 }
index 5861008a8afab21fadc5765dc4c57dd458a50cde..7f364b9baca42ca0487558cbfbc49af7aed2149d 100644 (file)
@@ -818,44 +818,6 @@ sudo_ldap_build_pass1(struct passwd *pw)
     return(buf);
 }
 
-/*
- * Map yes/true/on to TRUE, no/false/off to FALSE, else -1
- */
-int
-_atobool(const char *s)
-{
-    switch (*s) {
-       case 'y':
-       case 'Y':
-           if (strcasecmp(s, "yes") == 0)
-               return(TRUE);
-           break;
-       case 't':
-       case 'T':
-           if (strcasecmp(s, "true") == 0)
-               return(TRUE);
-           break;
-       case 'o':
-       case 'O':
-           if (strcasecmp(s, "on") == 0)
-               return(TRUE);
-           if (strcasecmp(s, "off") == 0)
-               return(FALSE);
-           break;
-       case 'n':
-       case 'N':
-           if (strcasecmp(s, "no") == 0)
-               return(FALSE);
-           break;
-       case 'f':
-       case 'F':
-           if (strcasecmp(s, "false") == 0)
-               return(FALSE);
-           break;
-    }
-    return(-1);
-}
-
 static void
 sudo_ldap_read_secret(const char *path)
 {
@@ -917,7 +879,7 @@ sudo_ldap_read_config(void)
            if (strcasecmp(keyword, cur->conf_str) == 0) {
                switch (cur->type) {
                case CONF_BOOL:
-                   *(int *)(cur->valp) = _atobool(value);
+                   *(int *)(cur->valp) = atobool(value) == TRUE;
                    break;
                case CONF_INT:
                    *(int *)(cur->valp) = atoi(value);
@@ -1025,7 +987,7 @@ sudo_ldap_read_config(void)
     if (ldap_conf.ssl != NULL) {
        if (strcasecmp(ldap_conf.ssl, "start_tls") == 0)
            ldap_conf.ssl_mode = SUDO_LDAP_STARTTLS;
-       else if (_atobool(ldap_conf.ssl))
+       else if (atobool(ldap_conf.ssl) == TRUE)
            ldap_conf.ssl_mode = SUDO_LDAP_SSL;
     }