]> granicus.if.org Git - sudo/commitdiff
Use vsyslog() if available.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 18 Oct 2016 23:00:53 +0000 (17:00 -0600)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 18 Oct 2016 23:00:53 +0000 (17:00 -0600)
config.h.in
configure
configure.ac
plugins/sudoers/logging.c

index 6586fb74eee8600aec2dab15b596cb32a1834baf..e34cc6dfdff849430358de48bc8e0c75a4541666 100644 (file)
 /* Define to 1 if you have the `vsnprintf' function. */
 #undef HAVE_VSNPRINTF
 
+/* Define to 1 if you have the `vsyslog' function. */
+#undef HAVE_VSYSLOG
+
 /* Define to 1 if you have the `wordexp' function. */
 #undef HAVE_WORDEXP
 
index 8c979882226db6db4dcebec6c4bd7092923c94e1..c3748d6621c89a375b55f1254fcde5745a8d3739 100755 (executable)
--- a/configure
+++ b/configure
@@ -2663,6 +2663,7 @@ as_fn_append ac_func_list " pwrite"
 as_fn_append ac_func_list " openat"
 as_fn_append ac_func_list " faccessat"
 as_fn_append ac_func_list " wordexp"
+as_fn_append ac_func_list " vsyslog"
 as_fn_append ac_func_list " seteuid"
 # Check that the precious variables saved in the cache have kept the same
 # value.
@@ -18095,6 +18096,8 @@ done
 
 
 
+
+
 
 
 case "$host_os" in
index 2d7554e35c727291e108a398a488cbba4852631f..55a2573f777d78bc7a03a57c7b58a86f904f3a07 100644 (file)
@@ -2408,7 +2408,7 @@ dnl
 dnl Function checks
 dnl
 AC_FUNC_GETGROUPS
-AC_CHECK_FUNCS_ONCE([fexecve killpg nl_langinfo strftime pread pwrite openat faccessat wordexp])
+AC_CHECK_FUNCS_ONCE([fexecve killpg nl_langinfo strftime pread pwrite openat faccessat wordexp vsyslog])
 case "$host_os" in
     hpux*)
        if test X"$ac_cv_func_pread" = X"yes"; then
index 64bd794e0b49254363ad5f8a53458b915e342836..be31f6c2ec2d2646e4f884e7c7c9bc882f6ee362 100644 (file)
@@ -72,18 +72,24 @@ static char *new_logline(const char *, int);
 static void
 mysyslog(int pri, const char *fmt, ...)
 {
-    char *buf;
     va_list ap;
     debug_decl(mysyslog, SUDOERS_DEBUG_LOGGING)
 
     va_start(ap, fmt);
     openlog("sudo", 0, def_syslog);
-    if (vasprintf(&buf, fmt, ap) == -1) {
-       sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
-    } else {
-       syslog(pri, "%s", buf);
-       free(buf);
-    }
+#ifdef HAVE_VSYSLOG
+    vsyslog(pri, fmt, ap);
+#else
+    do {
+       char *buf;
+       if (vasprintf(&buf, fmt, ap) == -1) {
+           sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+       } else {
+           syslog(pri, "%s", buf);
+           free(buf);
+       }
+    } while (0);
+#endif
     va_end(ap);
     closelog();
     debug_return;