Subject: Re: pkg/30510: xterm utmp_update problem
To: None <gnats-bugs@netbsd.org, pkg-manager@netbsd.org,>
From: Christos Zoulas <christos@zoulas.com>
List: pkgsrc-bugs
Date: 06/21/2005 14:46:13
On Jun 21,  6:41pm, asmodai@in-nomine.org (Jeroen Ruigrok/asmodai) wrote:
-- Subject: Re: pkg/30510: xterm utmp_update problem

| The following reply was made to PR pkg/30510; it has been noted by GNATS.
| 
| From: Jeroen Ruigrok/asmodai <asmodai@in-nomine.org>
| To: Thomas Klausner <wiz@NetBSD.org>
| Cc: gnats-bugs@NetBSD.org
| Subject: Re: pkg/30510: xterm utmp_update problem
| Date: Tue, 21 Jun 2005 20:40:20 +0200
| 
|  -On [20050615 15:12], Thomas Klausner (wiz@NetBSD.org) wrote:
|  >Could you please take a look at this one and advise?
|  
|  It's not a part of xterm nor of X itself.
|  
|  It's part of NetBSD's sources:
|  
|  src/libexec/utmp_update/utmp_update.c
|  
|  110 (void)snprintf(tty, sizeof(tty), "%s%s", _PATH_DEV, utx->ut_line);
|  111 fd = open(tty, O_RDONLY|O_NONBLOCK, 0);
|  112 if (fd != -1) {
|  113         if (fstat(fd, &st) == -1)
|  114                 err(1, "Cannot stat `%s'", tty);
|  115         if (ruid != 0 && st.st_uid != ruid)
|  116                 errx(1, "%s: Is not owned by you", tty);
|  117         if (!isatty(fd))
|  118                 errx(1, "%s: Not a tty device", tty);
|  119         (void)close(fd);
|  120         if (access(tty, W_OK|R_OK) == -1)
|  121                 err(1, "%s", tty);
|  
|  In xterm I have:
|  
|  main.c:
|  
|  2693 set_owner(char *device, uid_t uid, gid_t gid, mode_t mode)
|  2694 {
|  2695     if (chown(device, uid, gid) < 0) {
|  2696         if (errno != ENOENT
|  2697             && getuid() == 0) {
|  2698             fprintf(stderr, "Cannot chown %s to %ld,%ld: %s\n",
|  2699                     device, (long) uid, (long) gid, strerror(errno));
|  2700         }
|  2701     }
|  2702     chmod(device, mode);
|  2703 }
|  
|  What does your xtermcfg.h all contain after running bmake configure?

xterm should not be running setuid, and the chowning of the slave device
is happening in the kernel.

christos