SCO 'su' replacement
Eamonn McManus
em at dce.ie
Tue Apr 30 05:53:44 AEST 1991
On 11th April I reposted our replacement su for SCO Unix. I am grateful
to Jan-Piet Mens for pointing out that it did not successfully set the
login-uid (which is its main raison d'etre) on 3.2.2, and for helping me
try out replacements. This patch produces a version that works properly
on both 3.2.0 and 3.2.2.
,
Eamonn
*** /tmp/,RCSt1a18137 Mon Apr 29 20:49:01 1991
--- oksetluid.c Mon Apr 29 20:44:57 1991
***************
*** 9,15 ****
#ifndef lint
static const char rcsid[] =
! "$Id: oksetluid.c,v 1.1 90/09/28 16:21:11 em Release $";
#endif
#include <fcntl.h>
--- 9,15 ----
#ifndef lint
static const char rcsid[] =
! "$Id: oksetluid.c,v 1.2 91/04/29 20:44:21 em Release $";
#endif
#include <fcntl.h>
***************
*** 34,40 ****
struct security_info *secp;
long secpaddr;
int fd, i;
! char *err=0;
if (!setluid(id)) return 0;
uxnlist(nlsym);
if (!(secpaddr = nlsym[0].n_value) )
--- 34,40 ----
struct security_info *secp;
long secpaddr;
int fd, i;
! char *err=0, zero=0;
if (!setluid(id)) return 0;
uxnlist(nlsym);
if (!(secpaddr = nlsym[0].n_value) )
***************
*** 48,58 ****
else {
/* Stupid definition of offsetof() in <stddef.h> produces warning from
Microsoft compiler. */
! i = (long) secp + offsetof(struct security_info, si_luid);
if (lseek(fd, (long) i, 0) != i)
err = "Can't seek to info in /dev/kmem";
! else if (write(fd, &id, sizeof(id)) != sizeof(id))
! err = "Can't write luid to /dev/kmem";
}
close(fd);
return err;
--- 48,60 ----
else {
/* Stupid definition of offsetof() in <stddef.h> produces warning from
Microsoft compiler. */
! i = (long) secp + offsetof(struct security_info, si_luid_set);
if (lseek(fd, (long) i, 0) != i)
err = "Can't seek to info in /dev/kmem";
! else if (write(fd, &zero, sizeof(zero)) != sizeof(zero))
! err = "Can't write luid_set to /dev/kmem";
! else if (setluid(id) < 0)
! err = "Setluid failed";
}
close(fd);
return err;
*** /tmp/,RCSt1a18137 Mon Apr 29 20:49:04 1991
--- su.c Mon Apr 29 20:45:18 1991
***************
*** 29,35 ****
#ifndef lint
static const char rcsid[] =
! "$Id: su.c,v 1.1 90/09/28 16:22:21 em Release $";
#endif
#ifndef SecureWare
--- 29,35 ----
#ifndef lint
static const char rcsid[] =
! "$Id: su.c,v 1.2 91/04/29 20:44:58 em Release $";
#endif
#ifndef SecureWare
***************
*** 261,267 ****
if (islogin && chdir(pwd->pw_dir) < 0)
perror(pwd->pw_dir); /* But su anyway. */
execv(shell, shargs);
! crash("execl", shell);
}
--- 261,267 ----
if (islogin && chdir(pwd->pw_dir) < 0)
perror(pwd->pw_dir); /* But su anyway. */
execv(shell, shargs);
! crash("execv", shell);
}
More information about the Comp.unix.sysv386
mailing list