]> granicus.if.org Git - sudo/commitdiff
Do I/O logging in the C locale so the floating point numbers in the
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 27 Jul 2010 13:41:13 +0000 (09:41 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 27 Jul 2010 13:41:13 +0000 (09:41 -0400)
timing file are not locale-dependent.

--HG--
branch : 1.7

exec.c

diff --git a/exec.c b/exec.c
index afef44781d68fc889902e8265eea4f1feea27a1b..93316a0012b11f71e2f0bc7502ead5b4faad9c7e 100644 (file)
--- a/exec.c
+++ b/exec.c
@@ -52,6 +52,9 @@
 #if TIME_WITH_SYS_TIME
 # include <time.h>
 #endif
+#ifdef HAVE_SETLOCALE
+# include <locale.h>
+#endif
 #include <errno.h>
 #include <fcntl.h>
 #include <signal.h>
@@ -228,6 +231,14 @@ sudo_execve(path, argv, envp, uid, cstat, dowait, bgmode)
        child = fork_cmnd(path, argv, envp, sv, rbac_enabled);
     close(sv[1]);
 
+#ifdef HAVE_SETLOCALE
+    /*
+     * I/O logging must be in the C locale for floating point numbers
+     * to be logged consistently.
+     */
+    setlocale(LC_ALL, "C");
+#endif
+
     /*
      * In the event loop we pass input from user tty to master
      * and pass output from master to stdout and IO plugin.