]> granicus.if.org Git - sudo/commitdiff
Use a char array to map a number to a base36 digit.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 1 Feb 2011 19:54:08 +0000 (14:54 -0500)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 1 Feb 2011 19:54:08 +0000 (14:54 -0500)
plugins/sudoers/iolog.c

index 3a83d07816e84c1276ba4272e59d673827e73ccc..976c49241f72c4c129bdf257bcd3ab452bc6450a 100644 (file)
@@ -137,11 +137,12 @@ io_nextid(char *iolog_dir, char sessid[7])
 {
     struct stat sb;
     char buf[32], *ep;
-    int fd, i, ch;
+    int fd, i;
     unsigned long id = 0;
     int len;
     ssize_t nread;
     char pathbuf[PATH_MAX];
+    static const char b36char[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 
     /*
      * Create I/O log directory if it doesn't already exist.
@@ -184,9 +185,8 @@ io_nextid(char *iolog_dir, char sessid[7])
      * Note that that least significant digits go at the end of the string.
      */
     for (i = 5; i >= 0; i--) {
-       ch = id % 36;
+       buf[i] = b36char[id % 36];
        id /= 36;
-       buf[i] = ch < 10 ? ch + '0' : ch - 10 + 'A';
     }
     buf[6] = '\n';