You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

658 lines
19 KiB

+---------------------------------------------------------------------------
| Security Bugfix
| http://www.securityfocus.com/archive/1/345844/2003-11-24/2003-11-30/0
+---------------------------------------------------------------------------
Index: ansi.c
--- ansi.c.orig 2003-12-05 14:57:05 +0100
+++ ansi.c 2006-07-13 17:08:06 +0200
@@ -559,7 +559,7 @@
{
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
- if (curr->w_NumArgs < MAXARGS)
+ if (curr->w_NumArgs >= 0 && curr->w_NumArgs < MAXARGS)
{
if (curr->w_args[curr->w_NumArgs] < 100000000)
curr->w_args[curr->w_NumArgs] =
Index: resize.c
--- resize.c.orig 2003-09-08 16:26:31 +0200
+++ resize.c 2006-07-13 17:08:06 +0200
@@ -682,6 +682,17 @@
if (wi == 0)
he = hi = 0;
+ if (wi > 1000)
+ {
+ Msg(0, "Window width too large, truncated");
+ wi = 1000;
+ }
+ if (he > 1000)
+ {
+ Msg(0, "Window height too large, truncated");
+ he = 1000;
+ }
+
if (p->w_width == wi && p->w_height == he && p->w_histheight == hi)
{
debug("ChangeWindowSize: No change.\n");
+---------------------------------------------------------------------------
| In Solaris 10, the setenv() function has been added.
+---------------------------------------------------------------------------
Index: misc.c
--- misc.c.orig 2003-12-05 14:45:41 +0100
+++ misc.c 2006-07-13 18:00:46 +0200
@@ -613,7 +613,7 @@
*/
# endif /* NEEDSETENV */
#else /* USESETENV */
-# if defined(linux) || defined(__convex__) || (BSD >= 199103)
+# if defined(linux) || defined(__convex__) || (BSD >= 199103) || defined(__sun)
setenv(var, value, 1);
# else
setenv(var, value);
+---------------------------------------------------------------------------
| Mainly NetBSD specific patches taken from pkgsrc, partly relevant to
| FreeBSD and Solaris as well
+---------------------------------------------------------------------------
Index: config.h.in
--- config.h.in.orig 2003-12-05 14:59:39 +0100
+++ config.h.in 2006-07-13 17:42:35 +0200
@@ -431,6 +431,11 @@
#undef HAVE_DIRENT_H
/*
+ * Define HAVE_SYS_STROPTS_H if your system has <sys/stropts.h>
+ */
+#undef HAVE_SYS_STROPTS_H
+
+/*
* If your system has getutent(), pututline(), etc. to write to the
* utmp file, define GETUTENT.
*/
@@ -514,6 +519,15 @@
*/
#undef USEVARARGS
+#ifdef __NetBSD__
+/*
+ * XXX gcc 3.3 on some NetBSD platforms fails the configure test for this
+ * so force it on anyway.
+ */
+#undef USEVARARGS
+#define USEVARARGS 1
+#endif
+
/*
* If your system has strerror() define this.
*/
Index: configure
--- configure.orig 2003-12-05 14:46:53 +0100
+++ configure 2006-07-13 17:54:05 +0200
@@ -3911,7 +3911,7 @@
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#if defined(SVR4) && defined(sun)
+#if defined(__SVR4) && defined(__sun)
yes
#endif
@@ -4042,7 +4042,7 @@
main ()
{
-#if defined(linux) || defined(NeXT) || defined(_AUX_SOURCE) || defined(AUX) || defined(ultrix) || (defined(sun) && defined(SVR4)) || defined(ISC) || defined(sony_news)
+#if defined(linux) || defined(NeXT) || defined(_AUX_SOURCE) || defined(AUX) || defined(ultrix) || (defined(__sun) && defined(__SVR4)) || defined(ISC) || defined(sony_news)
seteuid_is_broken(0);
#else
seteuid(0);
@@ -5572,9 +5572,15 @@
#include <time.h> /* to get time_t on SCO */
#include <sys/types.h>
-#if defined(SVR4) && !defined(DGUX)
+#include <sys/param.h>
+#if defined(__SVR4) && !defined(DGUX) \
+ || (defined(__NetBSD_Version__) && (__NetBSD_Version__ >= 106050000))
#include <utmpx.h>
#define utmp utmpx
+# ifdef __NetBSD__
+# define pututline pututxline
+# define getutent getutxent
+# endif
#else
#include <utmp.h>
#endif
@@ -5624,7 +5630,7 @@
#include <time.h>
#include <sys/types.h>
-#if defined(SVR4) && !defined(DGUX)
+#if defined(__SVR4) && !defined(DGUX)
#include <utmpx.h>
#define utmp utmpx
#else
@@ -5680,7 +5686,7 @@
#include <time.h>
#include <sys/types.h>
-#if defined(SVR4) && !defined(DGUX)
+#if defined(__SVR4) && !defined(DGUX)
#include <utmpx.h>
#define utmp utmpx
#else
@@ -6316,7 +6322,7 @@
_CUT_HERE_
-#if !defined(LOADAV_GETLOADAVG) && ((defined(hp300) && !defined(__hpux)) || defined(sun) || (defined(ultrix) && defined(mips)) || defined(_SEQUENT_) || defined(sgi) || (defined(SVR4) && !defined(__hpux)) || defined(sony_news) || (!defined(__osf__) && defined(__alpha)) || defined(_IBMR2) || defined(_AUX_SOURCE) || defined(AUX) || defined(m88k))
+#if !defined(LOADAV_GETLOADAVG) && ((defined(hp300) && !defined(__hpux)) || defined(__sun) || (defined(ultrix) && defined(mips)) || defined(_SEQUENT_) || defined(sgi) || (defined(__SVR4) && !defined(__hpux)) || defined(sony_news) || (!defined(__osf__) && defined(__alpha)) || defined(_IBMR2) || defined(_AUX_SOURCE) || defined(AUX) || defined(m88k))
loadtype=long
# if defined(apollo) || defined(_IBMR2) || defined(_AUX_SOURCE) || defined(AUX)
loadscale=65536
@@ -6329,7 +6335,7 @@
loadtype=int
loadscale=1024
# else
-# if defined(MIPS) || defined(SVR4) || defined(m88k)
+# if defined(MIPS) || defined(__SVR4) || defined(m88k)
loadscale=256
# else /* not MIPS */
loadscale=1000 /* our default value */
@@ -7501,6 +7507,147 @@
fi
+for ac_header in sys/stropts.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+ yes:no )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ no:yes )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
echo "$as_me:$LINENO: checking for setenv" >&5
echo $ECHO_N "checking for setenv... $ECHO_C" >&6
Index: configure.in
--- configure.in.orig 2003-06-03 13:58:24 +0200
+++ configure.in 2006-07-13 17:50:35 +0200
@@ -206,7 +206,7 @@
AC_CHECKING(for Solaris 2.x)
AC_EGREP_CPP(yes,
-[#if defined(SVR4) && defined(sun)
+[#if defined(__SVR4) && defined(__sun)
yes
#endif
], LIBS="$LIBS -lsocket -lnsl -lkstat")
@@ -270,7 +270,7 @@
dnl multiuser screen sessions
AC_CHECKING(seteuid)
AC_TRY_LINK(,[
-#if defined(linux) || defined(NeXT) || defined(_AUX_SOURCE) || defined(AUX) || defined(ultrix) || (defined(sun) && defined(SVR4)) || defined(ISC) || defined(sony_news)
+#if defined(linux) || defined(NeXT) || defined(_AUX_SOURCE) || defined(AUX) || defined(ultrix) || (defined(__sun) && defined(__SVR4)) || defined(ISC) || defined(sony_news)
seteuid_is_broken(0);
#else
seteuid(0);
@@ -815,9 +815,15 @@
AC_TRY_LINK([
#include <time.h> /* to get time_t on SCO */
#include <sys/types.h>
-#if defined(SVR4) && !defined(DGUX)
+#include <sys/param.h>
+#if defined(__SVR4) && !defined(DGUX) \
+ || (defined(__NetBSD_Version__) && (__NetBSD_Version__ >= 106050000))
#include <utmpx.h>
#define utmp utmpx
+# ifdef __NetBSD__
+# define pututline pututxline
+# define getutent getutxent
+# endif
#else
#include <utmp.h>
#endif
@@ -832,7 +838,7 @@
AC_TRY_LINK([
#include <time.h>
#include <sys/types.h>
-#if defined(SVR4) && !defined(DGUX)
+#if defined(__SVR4) && !defined(DGUX)
#include <utmpx.h>
#define utmp utmpx
#else
@@ -848,7 +854,7 @@
AC_TRY_COMPILE([
#include <time.h>
#include <sys/types.h>
-#if defined(SVR4) && !defined(DGUX)
+#if defined(__SVR4) && !defined(DGUX)
#include <utmpx.h>
#define utmp utmpx
#else
@@ -979,7 +985,7 @@
#include <sys/types.h>
#include <sys/param.h>
],[
-#if !defined(LOADAV_GETLOADAVG) && ((defined(hp300) && !defined(__hpux)) || defined(sun) || (defined(ultrix) && defined(mips)) || defined(_SEQUENT_) || defined(sgi) || (defined(SVR4) && !defined(__hpux)) || defined(sony_news) || (!defined(__osf__) && defined(__alpha)) || defined(_IBMR2) || defined(_AUX_SOURCE) || defined(AUX) || defined(m88k))
+#if !defined(LOADAV_GETLOADAVG) && ((defined(hp300) && !defined(__hpux)) || defined(__sun) || (defined(ultrix) && defined(mips)) || defined(_SEQUENT_) || defined(sgi) || (defined(__SVR4) && !defined(__hpux)) || defined(sony_news) || (!defined(__osf__) && defined(__alpha)) || defined(_IBMR2) || defined(_AUX_SOURCE) || defined(AUX) || defined(m88k))
loadtype=long
# if defined(apollo) || defined(_IBMR2) || defined(_AUX_SOURCE) || defined(AUX)
loadscale=65536
@@ -992,7 +998,7 @@
loadtype=int
loadscale=1024
# else
-# if defined(MIPS) || defined(SVR4) || defined(m88k)
+# if defined(MIPS) || defined(__SVR4) || defined(m88k)
loadscale=256
# else /* not MIPS */
loadscale=1000 /* our default value */
@@ -1209,6 +1215,7 @@
AC_TRY_LINK(,[vsprintf(0,0,0);], AC_MSG_RESULT(yes);AC_DEFINE(USEVARARGS), AC_MSG_RESULT(no))
AC_HEADER_DIRENT
+AC_CHECK_HEADERS(sys/stropts.h)
AC_MSG_CHECKING(for setenv)
AC_TRY_LINK(,[setenv((char *)0,(char *)0);unsetenv((char *)0);], AC_MSG_RESULT(yes);AC_DEFINE(USESETENV),
Index: os.h
--- os.h.orig 2002-01-08 16:42:33 +0100
+++ os.h 2006-07-13 17:37:58 +0200
@@ -25,6 +25,7 @@
#include <stdio.h>
#include <errno.h>
+#include <string.h>
#include <sys/param.h>
/* In strict ANSI mode, HP-UX machines define __hpux but not hpux */
@@ -161,7 +162,7 @@
# define setregid(rgid, egid) setresgid(rgid, egid, -1)
#endif
-#if defined(HAVE_SETEUID) || defined(HAVE_SETREUID)
+#if (defined(HAVE_SETEUID) || defined(HAVE_SETREUID)) && __FreeBSD_version < 500000
# define USE_SETEUID
#endif
@@ -260,9 +261,15 @@
#endif
#if defined(UTMPOK) || defined(BUGGYGETLOGIN)
-# if defined(SVR4) && !defined(DGUX) && !defined(__hpux) && !defined(linux)
+# if defined(SVR4) && !defined(DGUX) && !defined(__hpux) && !defined(linux) \
+ || (defined(__NetBSD_Version__) && (__NetBSD_Version__ >= 106050000))
# include <utmpx.h>
-# define UTMPFILE UTMPX_FILE
+# ifdef __NetBSD__
+# define UTMPFILE _PATH_UTMPX
+# define NetBSD_UTMP
+# else
+# define UTMPFILE UTMPX_FILE
+# endif
# define utmp utmpx
# define getutent getutxent
# define getutid getutxid
Index: process.c
--- process.c.orig 2003-09-18 14:53:54 +0200
+++ process.c 2006-07-13 17:43:26 +0200
@@ -5466,7 +5466,7 @@
*buf = 0;
return;
}
- act.nr = (int)data;
+ act.nr = (int)(long)data;
act.args = noargs;
act.argl = 0;
DoAction(&act, -1);
Index: pty.c
--- pty.c.orig 2003-09-08 16:26:18 +0200
+++ pty.c 2006-07-13 17:41:29 +0200
@@ -33,10 +33,12 @@
# include <sys/ioctl.h>
#endif
+#ifndef __FreeBSD__
/* for solaris 2.1, Unixware (SVR4.2) and possibly others */
-#ifdef HAVE_SVR4_PTYS
+#ifdef HAVE_SYS_STROPTS_H
# include <sys/stropts.h>
#endif
+#endif
#if defined(sun) && defined(LOCKPTY) && !defined(TIOCEXCL)
# include <sys/ttold.h>
@@ -332,6 +334,46 @@
/***************************************************************/
+#if defined(__NetBSD__) && !defined(PTY_DONE)
+#define PTY_DONE
+
+#include <sys/param.h>
+#include <string.h>
+
+int
+OpenPTY(ttyn)
+char **ttyn;
+{
+ int m, s, f;
+ char *t;
+
+ do
+ {
+ if (openpty(&m, &s, TtyName, NULL, NULL) < 0)
+ return -1;
+ close(m);
+ close(s);
+
+ strcpy(PtyName, TtyName);
+ t = strrchr(PtyName, '/');
+ if ((t == NULL ) || (*++t != 't'))
+ return -1;
+ *t = 'p';
+
+ f = open(PtyName, O_RDWR | O_NOCTTY);
+ }
+ while (f < 0);
+
+ initmaster(f);
+ *ttyn = TtyName;
+
+ return f;
+}
+#endif
+
+/***************************************************************/
+
+
#ifndef PTY_DONE
int
OpenPTY(ttyn)
Index: utmp-netbsd.c
--- utmp-netbsd.c.orig 1970-01-01 01:00:00 +0100
+++ utmp-netbsd.c 2006-07-13 17:57:44 +0200
@@ -0,0 +1,80 @@
+#include <sys/param.h>
+#if defined(__NetBSD_Version__) && (__NetBSD_Version__ >= 106050000)
+
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/wait.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <ttyent.h>
+#include <unistd.h>
+#include <util.h>
+#include <utmp.h>
+
+static struct utmp saved_utmp;
+static int saved_utmp_ok = 0;
+
+int
+lineslot(line)
+char *line;
+{
+ int slot;
+ struct ttyent *ttyp;
+
+ setttyent();
+ for (slot = 1; (ttyp = getttyent()) != NULL; ++slot)
+ if (!strcmp(ttyp->ty_name, line)) {
+ endttyent();
+ return(slot);
+ }
+ endttyent();
+ return(0);
+}
+
+void
+utmp_login(line)
+char *line;
+{
+ int fd;
+ int tty;
+
+ if (!saved_utmp_ok)
+ return;
+
+ tty = lineslot(line);
+ if (tty > 0 && (fd = open(_PATH_UTMP, O_WRONLY|O_CREAT, 0644)) >= 0) {
+ (void)lseek(fd, (off_t)(tty * sizeof(struct utmp)), SEEK_SET);
+ (void)write(fd, &saved_utmp, sizeof(struct utmp));
+ (void)close(fd);
+ }
+}
+
+void
+utmp_logout(const char *line)
+{
+ int fd;
+ struct utmp ut;
+
+ if ((fd = open(_PATH_UTMP, O_RDWR, 0)) < 0)
+ return;
+ while (read(fd, &ut, sizeof(ut)) == sizeof(ut)) {
+ if (!ut.ut_name[0] || strncmp(ut.ut_line, line, UT_LINESIZE))
+ continue;
+ memcpy(&saved_utmp, &ut, sizeof(ut));
+ saved_utmp_ok = 1;
+ memset(ut.ut_name, 0, UT_NAMESIZE);
+ memset(ut.ut_host, 0, UT_HOSTSIZE);
+ (void)time(&ut.ut_time);
+ (void)lseek(fd, -(off_t)sizeof(ut), SEEK_CUR);
+ (void)write(fd, &ut, sizeof(ut));
+ }
+ (void)close(fd);
+}
+
+#endif
+
Index: utmp.c
--- utmp.c.orig 2003-09-08 16:27:17 +0200
+++ utmp.c 2006-07-13 17:11:46 +0200
@@ -42,6 +42,11 @@
extern char *LoginName;
extern int real_uid, eff_uid;
+#ifdef NetBSD_UTMP
+extern void utmp_login __P((char *));
+extern void utmp_logout __P((char *));
+#endif
+
/*
* UTNOKEEP: A (ugly) hack for apollo that does two things:
@@ -310,6 +315,9 @@
ASSERT(display);
debug("RemoveLoginSlot: removing your logintty\n");
+#ifdef NetBSD_UTMP
+ utmp_logout(stripdev(D_usertty));
+#endif
D_loginslot = TtyNameSlot(D_usertty);
if (D_loginslot == (slot_t)0 || D_loginslot == (slot_t)-1)
return;
@@ -374,6 +382,9 @@
debug("RestoreLoginSlot()\n");
ASSERT(display);
+#ifdef NetBSD_UTMP
+ utmp_login(stripdev(D_usertty));
+#endif
if (utmpok && D_loginslot != (slot_t)0 && D_loginslot != (slot_t)-1)
{
debug1(" logging you in again (slot %#x)\n", (int)D_loginslot);
@@ -604,6 +615,7 @@
char *line, *user;
int pid;
{
+ time_t temp;
u->ut_type = USER_PROCESS;
strncpy(u->ut_user, user, sizeof(u->ut_user));
/* Now the tricky part... guess ut_id */
@@ -618,7 +630,8 @@
#endif /* sgi */
strncpy(u->ut_line, line, sizeof(u->ut_line));
u->ut_pid = pid;
- (void)time((time_t *)&u->ut_time);
+ (void)time(&temp);
+ u->ut_time = temp;
}
static slot_t
@@ -726,9 +739,12 @@
char *line, *user;
int pid;
{
+ time_t temp;
+
strncpy(u->ut_line, line, sizeof(u->ut_line));
strncpy(u->ut_name, user, sizeof(u->ut_name));
- (void)time((time_t *)&u->ut_time);
+ (void)time(&temp);
+ u->ut_time = temp;
}
static slot_t