/[hurd]/hurd/term/users.c
ViewVC logotype

Diff of /hurd/term/users.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.97 by neal, Tue Mar 26 19:11:01 2002 UTC revision 1.98 by roland, Thu Jun 13 20:52:17 2002 UTC
# Line 79  static error_t carrier_error; Line 79  static error_t carrier_error;
79  struct protid_hook  struct protid_hook
80  {  {
81    int refcnt;    int refcnt;
82    pid_t pid, pgrp;    pid_t pid, pgrp, sid;
83  };  };
84    
85  void  void
# Line 415  S_termctty_open_terminal (mach_port_t ar Line 415  S_termctty_open_terminal (mach_port_t ar
415  /* Implement term_become_ctty as described in <hurd/term.defs>.  */  /* Implement term_become_ctty as described in <hurd/term.defs>.  */
416  kern_return_t  kern_return_t
417  S_term_open_ctty (mach_port_t arg,  S_term_open_ctty (mach_port_t arg,
418                      pid_t pid,                    pid_t pid,
419                      pid_t pgrp,                    pid_t pgrp,
420                      mach_port_t *newpt,                    mach_port_t *newpt,
421                      mach_msg_type_name_t *newpttype)                    mach_msg_type_name_t *newpttype)
422  {  {
423    error_t err;    error_t err;
424    struct trivfs_protid *newcred;    struct trivfs_protid *newcred;
# Line 427  S_term_open_ctty (mach_port_t arg, Line 427  S_term_open_ctty (mach_port_t arg,
427    if (!cred)    if (!cred)
428      return EOPNOTSUPP;      return EOPNOTSUPP;
429    
430      if (pid <= 0 || pgrp <= 0)
431        {
432          ports_port_deref (cred);
433          return EINVAL;
434        }
435    
436    mutex_lock (&global_lock);    mutex_lock (&global_lock);
437    
438    if (!cred->po->openmodes & (O_READ|O_WRITE))    if (!cred->po->openmodes & (O_READ|O_WRITE))
# Line 445  S_term_open_ctty (mach_port_t arg, Line 451  S_term_open_ctty (mach_port_t arg,
451    
452            hook->pid = pid;            hook->pid = pid;
453            hook->pgrp = pgrp;            hook->pgrp = pgrp;
454              hook->sid = getsid (pid);
455            hook->refcnt = 1;            hook->refcnt = 1;
456    
457            if (newcred->hook)            if (newcred->hook)
# Line 560  trivfs_S_io_write (struct trivfs_protid Line 567  trivfs_S_io_write (struct trivfs_protid
567                     mach_port_t reply,                     mach_port_t reply,
568                     mach_msg_type_name_t replytype,                     mach_msg_type_name_t replytype,
569                     char *data,                     char *data,
570                     u_int datalen,                     size_t datalen,
571                     off_t offset,                     loff_t offset,
572                     int *amt)                     size_t *amt)
573  {  {
574    int i;    int i;
575    int cancel;    int cancel;
# Line 637  trivfs_S_io_read (struct trivfs_protid * Line 644  trivfs_S_io_read (struct trivfs_protid *
644                    mach_port_t reply,                    mach_port_t reply,
645                    mach_msg_type_name_t replytype,                    mach_msg_type_name_t replytype,
646                    char **data,                    char **data,
647                    u_int *datalen,                    size_t *datalen,
648                    off_t offset,                    loff_t offset,
649                    int amount)                    size_t amount)
650  {  {
651    int cancel;    int cancel;
652    int i, max;    int i, max;
# Line 817  error_t Line 824  error_t
824  trivfs_S_io_readable (struct trivfs_protid *cred,  trivfs_S_io_readable (struct trivfs_protid *cred,
825                        mach_port_t reply,                        mach_port_t reply,
826                        mach_msg_type_name_t replytype,                        mach_msg_type_name_t replytype,
827                        int *amt)                        size_t *amt)
828  {  {
829    if (!cred)    if (!cred)
830      return EOPNOTSUPP;      return EOPNOTSUPP;
# Line 1634  S_tioctl_tiocspgrp (io_t port, Line 1641  S_tioctl_tiocspgrp (io_t port,
1641    mutex_lock (&global_lock);    mutex_lock (&global_lock);
1642    if (!(cred->po->openmodes & (O_READ|O_WRITE)))    if (!(cred->po->openmodes & (O_READ|O_WRITE)))
1643      err = EBADF;      err = EBADF;
1644      else if (!cred->hook
1645               || getsid (-pgrp) != ((struct protid_hook *)cred->hook)->sid)
1646        err = EPERM;
1647    else    else
1648      {      {
1649        termflags &= ~NO_OWNER;        termflags &= ~NO_OWNER;
# Line 2032  trivfs_S_io_select (struct trivfs_protid Line 2042  trivfs_S_io_select (struct trivfs_protid
2042  }  }
2043    
2044  kern_return_t  kern_return_t
2045  trivfs_S_io_map (struct trivfs_protid *cred,  trivfs_S_io_map  (struct trivfs_protid *cred,
2046                   mach_port_t *rdobj,                    mach_port_t reply,
2047                   mach_msg_type_name_t *rdtype,                    mach_msg_type_name_t replyPoly,
2048                   mach_port_t *wrobj,                    mach_port_t *rdobj,
2049                   mach_msg_type_name_t *wrtype)                    mach_msg_type_name_t *rdtype,
2050                      mach_port_t *wrobj,
2051                      mach_msg_type_name_t *wrtype)
2052  {  {
2053    return EOPNOTSUPP;    return EOPNOTSUPP;
2054  }  }

Legend:
Removed from v.1.97  
changed lines
  Added in v.1.98

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26