Imported Upstream version 1.7.6p1
[debian/sudo] / iolog.c
diff --git a/iolog.c b/iolog.c
index 4e492b6017cbd91164876bd32982ee2e04eb53e0..131770ec3f6e151d3ff67a7ade77b2599a325891 100644 (file)
--- a/iolog.c
+++ b/iolog.c
@@ -89,27 +89,28 @@ io_nextid()
 {
     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 _PATH_SUDO_IO_LOGDIR if it doesn't already exist.
+     * Create I/O log directory if it doesn't already exist.
      */
-    if (stat(_PATH_SUDO_IO_LOGDIR, &sb) != 0) {
-       if (mkdir(_PATH_SUDO_IO_LOGDIR, S_IRWXU) != 0)
-           log_error(USE_ERRNO, "Can't mkdir %s", _PATH_SUDO_IO_LOGDIR);
+    if (stat(def_iolog_dir, &sb) != 0) {
+       if (mkdir(def_iolog_dir, S_IRWXU) != 0)
+           log_error(USE_ERRNO, "Can't mkdir %s", def_iolog_dir);
     } else if (!S_ISDIR(sb.st_mode)) {
        log_error(0, "%s exists but is not a directory (0%o)",
-           _PATH_SUDO_IO_LOGDIR, (unsigned int) sb.st_mode);
+           def_iolog_dir, (unsigned int) sb.st_mode);
     }
 
     /*
      * Open sequence file
      */
-    len = snprintf(pathbuf, sizeof(pathbuf), "%s/seq", _PATH_SUDO_IO_LOGDIR);
+    len = snprintf(pathbuf, sizeof(pathbuf), "%s/seq", def_iolog_dir);
     if (len <= 0 || len >= sizeof(pathbuf)) {
        errno = ENAMETOOLONG;
        log_error(USE_ERRNO, "%s/seq", pathbuf);
@@ -135,9 +136,8 @@ io_nextid()
      * 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';
 
@@ -163,14 +163,14 @@ build_idpath(pathbuf, pathsize)
        log_error(0, "tried to build a session id path without a session id");
 
     /*
-     * Path is of the form /var/log/sudo-session/00/00/01.
+     * Path is of the form /var/log/sudo-io/00/00/01.
      */
-    len = snprintf(pathbuf, pathsize, "%s/%c%c/%c%c/%c%c", _PATH_SUDO_IO_LOGDIR,
+    len = snprintf(pathbuf, pathsize, "%s/%c%c/%c%c/%c%c", def_iolog_dir,
        sudo_user.sessid[0], sudo_user.sessid[1], sudo_user.sessid[2],
        sudo_user.sessid[3], sudo_user.sessid[4], sudo_user.sessid[5]);
     if (len <= 0 && len >= pathsize) {
        errno = ENAMETOOLONG;
-       log_error(USE_ERRNO, "%s/%s", _PATH_SUDO_IO_LOGDIR, sudo_user.sessid);
+       log_error(USE_ERRNO, "%s/%s", def_iolog_dir, sudo_user.sessid);
     }
 
     /*
@@ -187,7 +187,7 @@ build_idpath(pathbuf, pathsize)
        pathbuf[len - i] = '/';
     }
 
-    return(len);
+    return len;
 }
 
 static void *
@@ -227,7 +227,7 @@ io_log_open()
 
     /*
      * Build a path containing the session id split into two-digit subdirs,
-     * so ID 000001 becomes /var/log/sudo-session/00/00/01.
+     * so ID 000001 becomes /var/log/sudo-io/00/00/01.
      */
     len = build_idpath(pathbuf, sizeof(pathbuf));
     if (len == -1)