summaryrefslogtreecommitdiff
path: root/sys/compat
diff options
context:
space:
mode:
authorEric Jackson <ericj@cvs.openbsd.org>2000-08-12 20:46:43 +0000
committerEric Jackson <ericj@cvs.openbsd.org>2000-08-12 20:46:43 +0000
commit3fbae67bd5ee83a4b5f2635a293f99239401aa04 (patch)
treed1600037da0bef90182fe5ba76f5bfaf62ea7ac2 /sys/compat
parenta33c5d3a5f4d74a7366e4e4c3f9c1296b25d2b66 (diff)
emulate uname correctly
Diffstat (limited to 'sys/compat')
-rw-r--r--sys/compat/osf1/osf1_misc.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/sys/compat/osf1/osf1_misc.c b/sys/compat/osf1/osf1_misc.c
index 0800adcce1b..13191c7dcce 100644
--- a/sys/compat/osf1/osf1_misc.c
+++ b/sys/compat/osf1/osf1_misc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: osf1_misc.c,v 1.12 2000/08/04 15:47:55 ericj Exp $ */
+/* $OpenBSD: osf1_misc.c,v 1.13 2000/08/12 20:46:42 ericj Exp $ */
/* $NetBSD: osf1_misc.c,v 1.55 2000/06/28 15:39:33 mrg Exp $ */
/*
@@ -240,15 +240,22 @@ osf1_sys_uname(p, v, retval)
struct osf1_sys_uname_args *uap = v;
struct osf1_utsname u;
const char *cp;
+ extern char ostype[], hostname[], osrelease[], version[], machine[];
char *dp, *ep;
/* XXX would use stackgap, but our struct utsname is too big! */
- /*
- * strncpy(u.sysname, ostype, sizeof(u.sysname));
- */
- strncpy(u.sysname, "OpenBSD", sizeof(u.sysname));
+
+ bzero(&u, sizeof(u));
+
+ strncpy(u.sysname, ostype, sizeof(u.sysname));
+ u.sysname[sizeof(u.sysname) - 1] = '\0';
+
strncpy(u.nodename, hostname, sizeof(u.nodename));
- strncpy(u.release, version, sizeof(u.release));
+ u.nodename[sizeof(u.nodename) - 1] = '\0';
+
+ strncpy(u.release, osrelease, sizeof(u.release));
+ u.release[sizeof(u.release) - 1] = '\0';
+
dp = u.version;
ep = &u.version[sizeof(u.version) - 1];
for (cp = version; *cp && *cp != '('; cp++)
@@ -260,7 +267,10 @@ osf1_sys_uname(p, v, retval)
for (; *cp && *cp != ':' && dp < ep; cp++)
*dp++ = *cp;
*dp = '\0';
- strncpy(u.machine, MACHINE, sizeof(u.machine));
+
+ strncpy(u.machine, machine, sizeof(u.machine));
+ u.machine[sizeof(u.machine) - 1] = '\0';
+
return (copyout((caddr_t)&u, (caddr_t)SCARG(uap, name), sizeof u));
}