summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2007-12-17 10:44:09 -0800
committerJeremy Allison <jra@samba.org>2007-12-17 10:44:09 -0800
commit8f28bda7f8c18de597d345126c9ee03e99776e55 (patch)
treea93a0c31912194314a3ee4d8a4d7156e7e27f756
parentd20608c8f314476ca7dde8a9a61495431b4bccff (diff)
downloadsamba-8f28bda7f8c18de597d345126c9ee03e99776e55.tar.gz
samba-8f28bda7f8c18de597d345126c9ee03e99776e55.tar.bz2
samba-8f28bda7f8c18de597d345126c9ee03e99776e55.zip
Fix bug #5121 (unix passwd sync not working on a streams based
system). Jeremy. (This used to be commit 545cd2139cfc9484b733693814d4724d37125942)
-rw-r--r--source3/lib/replace/libreplace.m41
-rw-r--r--source3/lib/replace/system/network.h4
-rw-r--r--source3/smbd/chgpasswd.c14
3 files changed, 12 insertions, 7 deletions
diff --git a/source3/lib/replace/libreplace.m4 b/source3/lib/replace/libreplace.m4
index c10a4b2381..7a5283a4d6 100644
--- a/source3/lib/replace/libreplace.m4
+++ b/source3/lib/replace/libreplace.m4
@@ -100,6 +100,7 @@ AC_CHECK_HEADERS(sys/socket.h netinet/in.h netdb.h arpa/inet.h)
AC_CHECK_HEADERS(netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
AC_CHECK_HEADERS(sys/sockio.h sys/un.h)
AC_CHECK_HEADERS(sys/mount.h mntent.h)
+AC_CHECK_HEADERS(stropts.h)
dnl we need to check that net/if.h really can be used, to cope with hpux
dnl where including it always fails
diff --git a/source3/lib/replace/system/network.h b/source3/lib/replace/system/network.h
index d3ae2bf398..9087c02da1 100644
--- a/source3/lib/replace/system/network.h
+++ b/source3/lib/replace/system/network.h
@@ -78,6 +78,10 @@
#include <sys/ioctl.h>
#endif
+#ifdef HAVE_STROPTS_H
+#include <stropts.h>
+#endif
+
#ifdef REPLACE_INET_NTOA
/* define is in "replace.h" */
char *rep_inet_ntoa(struct in_addr ip);
diff --git a/source3/smbd/chgpasswd.c b/source3/smbd/chgpasswd.c
index 5ccf3ed9da..e478122e9b 100644
--- a/source3/smbd/chgpasswd.c
+++ b/source3/smbd/chgpasswd.c
@@ -159,19 +159,19 @@ static int dochild(int master, const char *slavedev, const struct passwd *pass,
DEBUG(3, ("More weirdness, could not open %s\n", slavedev));
return (False);
}
-#if defined(I_PUSH) && defined(I_FIND)
+#if defined(TIOCSCTTY)
+ if (ioctl(slave, TIOCSCTTY, 0) < 0)
+ {
+ DEBUG(3, ("Error in ioctl call for slave pty\n"));
+ /* return(False); */
+ }
+#elif defined(I_PUSH) && defined(I_FIND)
if (ioctl(slave, I_FIND, "ptem") == 0) {
ioctl(slave, I_PUSH, "ptem");
}
if (ioctl(slave, I_FIND, "ldterm") == 0) {
ioctl(slave, I_PUSH, "ldterm");
}
-#elif defined(TIOCSCTTY)
- if (ioctl(slave, TIOCSCTTY, 0) < 0)
- {
- DEBUG(3, ("Error in ioctl call for slave pty\n"));
- /* return(False); */
- }
#endif
/* Close master. */