summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2009-02-12 12:19:20 +1100
committerDamien Miller <djm@mindrot.org>2009-02-12 12:19:20 +1100
commit2de762456e8cdb92b85c1e573cbf2b4b70eee847 (patch)
tree3c24fb62c3391fdbdb684390b563d97426287e90
parent642ebe5b51112862f4c041abf6064fe711f56009 (diff)
- (djm) [sshpty.c] bz#1419: OSX uses cloning ptys that automagically
set ownership and modes, so avoid explicitly setting them
-rw-r--r--ChangeLog6
-rw-r--r--sshpty.c9
2 files changed, 14 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 5e7570484..8bec9d153 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
120090212
2 - (djm) [sshpty.c] bz#1419: OSX uses cloning ptys that automagically
3 set ownership and modes, so avoid explicitly setting them
4
120090201 520090201
2 - (dtucker) [defines.h sshconnect.c] INET6_ADDRSTRLEN is now needed in 6 - (dtucker) [defines.h sshconnect.c] INET6_ADDRSTRLEN is now needed in
3 channels.c too, so move the definition for non-IP6 platforms to defines.h 7 channels.c too, so move the definition for non-IP6 platforms to defines.h
@@ -5114,5 +5118,5 @@
5114 OpenServer 6 and add osr5bigcrypt support so when someone migrates 5118 OpenServer 6 and add osr5bigcrypt support so when someone migrates
5115 passwords between UnixWare and OpenServer they will still work. OK dtucker@ 5119 passwords between UnixWare and OpenServer they will still work. OK dtucker@
5116 5120
5117$Id: ChangeLog,v 1.5183 2009/02/01 11:19:54 dtucker Exp $ 5121$Id: ChangeLog,v 1.5184 2009/02/12 01:19:20 djm Exp $
5118 5122
diff --git a/sshpty.c b/sshpty.c
index 5a0d1a7ad..bbbc0fefe 100644
--- a/sshpty.c
+++ b/sshpty.c
@@ -46,6 +46,13 @@
46#define O_NOCTTY 0 46#define O_NOCTTY 0
47#endif 47#endif
48 48
49#ifdef __APPLE__
50# include <AvailabilityMacros.h>
51# if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
52# define __APPLE_PRIVPTY__
53# endif
54#endif
55
49/* 56/*
50 * Allocates and opens a pty. Returns 0 if no pty could be allocated, or 57 * Allocates and opens a pty. Returns 0 if no pty could be allocated, or
51 * nonzero if a pty was successfully allocated. On success, open file 58 * nonzero if a pty was successfully allocated. On success, open file
@@ -78,10 +85,12 @@ pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, size_t namebuflen)
78void 85void
79pty_release(const char *tty) 86pty_release(const char *tty)
80{ 87{
88#ifndef __APPLE_PRIVPTY__
81 if (chown(tty, (uid_t) 0, (gid_t) 0) < 0) 89 if (chown(tty, (uid_t) 0, (gid_t) 0) < 0)
82 error("chown %.100s 0 0 failed: %.100s", tty, strerror(errno)); 90 error("chown %.100s 0 0 failed: %.100s", tty, strerror(errno));
83 if (chmod(tty, (mode_t) 0666) < 0) 91 if (chmod(tty, (mode_t) 0666) < 0)
84 error("chmod %.100s 0666 failed: %.100s", tty, strerror(errno)); 92 error("chmod %.100s 0666 failed: %.100s", tty, strerror(errno));
93#endif /* __APPLE_PRIVPTY__ */
85} 94}
86 95
87/* Makes the tty the process's controlling tty and sets it to sane modes. */ 96/* Makes the tty the process's controlling tty and sets it to sane modes. */