summary refs log tree commit diff
path: root/nscd/nscd_stat.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-05-04 07:00:44 +0000
committerUlrich Drepper <drepper@redhat.com>2003-05-04 07:00:44 +0000
commita12ce44f6992d8249f779e95db730a9634571654 (patch)
tree27b9bac188927e65f23574bc15258aeac868ddff /nscd/nscd_stat.c
parentf866314b89d56845f55e6f365e18b31ec978ec3a (diff)
downloadglibc-a12ce44f6992d8249f779e95db730a9634571654.tar.gz
glibc-a12ce44f6992d8249f779e95db730a9634571654.tar.xz
glibc-a12ce44f6992d8249f779e95db730a9634571654.zip
Update.
2003-05-03  Ulrich Drepper  <drepper@redhat.com>

	* nscd/nscd.c (main): Parse config file right after parsing
	parameters.  Then, if get_stats is true, call receive_print_stats.
	Drop parameter from nscd_init call.
	(get_stats): New variable.
	(parse_opt): Set get_stats, don't call receive_print_stats here.
	* nscd/nscd.h: Declare dbs, stat_user, and stat_uid.  Adjust nscd_init
	prototype.
	* nscd/connections.c (stat_user, stat_uid): New variables.
	(dbs): Make global.
	(nscd_init): Don't read configuration file here.  Drop parameter.
	(handle_request): Cleanup handling of non-database lookup requests.
	* nscd/nscd_conf.c (nscd_parse_file): Recognize stat-user entry.
	Get UID of the specified user.  Use xstrdup instead of strdup.
	* nscd/nscd_stat.c (receive_print_stats): Check UID.  If not zero,
	check stat_user.
	* nscd/Makefile (nscd-modules): Add xstrdup.
	* nscd/nscd.conf: Document stat-user entry.

2003-05-03  H.J. Lu  <hongjiu.lu@intel.com>

	* sysdeps/unix/sysv/linux/ia64/sysdep.h (__NR_semtimedop): Define
	if not defined.
Diffstat (limited to 'nscd/nscd_stat.c')
-rw-r--r--nscd/nscd_stat.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/nscd/nscd_stat.c b/nscd/nscd_stat.c
index 7cfde982f6..f04e1972b5 100644
--- a/nscd/nscd_stat.c
+++ b/nscd/nscd_stat.c
@@ -114,6 +114,24 @@ receive_print_stats (void)
   ssize_t nbytes;
   int fd;
   int i;
+  uid_t uid = getuid ();
+
+  /* Find out whether there is another user but root allowed to
+     request statistics.  */
+  if (uid != 0)
+    {
+      /* User specified?  */
+      if(stat_user == NULL || stat_uid != uid)
+	{
+	  if (stat_user != NULL)
+	    error (EXIT_FAILURE, 0,
+		   _("Only root or %s is allowed to use this option!"),
+		   stat_user);
+	  else
+	    error (EXIT_FAILURE, 0,
+		   _("Only root is allowed to use this option!"));
+	}
+    }
 
   /* Open a socket to the running nscd.  */
   fd = nscd_open_socket ();