Author: pjd
Date: Thu Jul 18 21:56:10 2013
New Revision: 253456
URL: http://svnweb.freebsd.org/changeset/base/253456

Log:
  - Make localtime(3) to work in sandbox.
  - Move strerror(3) initialization to its own function.

Modified:
  head/usr.bin/kdump/kdump.c

Modified: head/usr.bin/kdump/kdump.c
==============================================================================
--- head/usr.bin/kdump/kdump.c  Thu Jul 18 20:59:58 2013        (r253455)
+++ head/usr.bin/kdump/kdump.c  Thu Jul 18 21:56:10 2013        (r253456)
@@ -165,6 +165,31 @@ struct proc_info
 
 TAILQ_HEAD(trace_procs, proc_info) trace_procs;
 
+static void
+strerror_init(void)
+{
+
+       /*
+        * Cache NLS data before entering capability mode.
+        * XXXPJD: There should be strerror_init() and strsignal_init() in libc.
+        */
+       (void)catopen("libc", NL_CAT_LOCALE);
+}
+
+static void
+localtime_init(void)
+{
+       time_t ltime;
+
+       /*
+        * Allow localtime(3) to cache /etc/localtime content before entering
+        * capability mode.
+        * XXXPJD: There should be localtime_init() in libc.
+        */
+       (void)time(&ltime);
+       (void)localtime(&ltime);
+}
+
 int
 main(int argc, char *argv[])
 {
@@ -236,11 +261,9 @@ main(int argc, char *argv[])
        if (!freopen(tracefile, "r", stdin))
                err(1, "%s", tracefile);
 
-       /*
-        * Cache NLS data before entering capability mode.
-        * XXXPJD: There should be strerror_init() and strsignal_init() in libc.
-        */
-       (void)catopen("libc", NL_CAT_LOCALE);
+       strerror_init();
+       localtime_init();
+
        if (resolv == 0) {
                if (cap_enter() < 0 && errno != ENOSYS)
                        err(1, "unable to enter capability mode");
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to