From a9680d7112f3b97df22bc66752579b74b138a7b7 Mon Sep 17 00:00:00 2001 From: Mike Pritchard Date: Mon, 31 Jul 1995 10:10:02 +0000 Subject: [PATCH] Null terminate all strings returned by the dummy uname() routine, and make sure that the version string is somewhat sane. This closes out PR#462. Reviewed by: Bruce Evans --- lib/libc/gen/__xuname.c | 22 +++++++++++++--------- lib/libc/gen/uname.c | 22 +++++++++++++--------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/lib/libc/gen/__xuname.c b/lib/libc/gen/__xuname.c index 63f29566660..93f659e5784 100644 --- a/lib/libc/gen/__xuname.c +++ b/lib/libc/gen/__xuname.c @@ -34,7 +34,7 @@ #if defined(LIBC_SCCS) && !defined(lint) /*static char sccsid[] = "From: @(#)uname.c 8.1 (Berkeley) 1/4/94";*/ static const char rcsid[] = - "$Id: uname.c,v 1.2 1994/10/13 20:31:19 wollman Exp $"; + "$Id: uname.c,v 1.3 1995/05/30 05:40:29 rgrimes Exp $"; #endif /* LIBC_SCCS and not lint */ #include @@ -63,6 +63,7 @@ uname(name) else rval = -1; } + name->sysname[sizeof(name->sysname) - 1] = '\0'; mib[0] = CTL_KERN; mib[1] = KERN_HOSTNAME; @@ -74,6 +75,7 @@ uname(name) else rval = -1; } + name->nodename[sizeof(name->nodename) - 1] = '\0'; mib[0] = CTL_KERN; mib[1] = KERN_OSRELEASE; @@ -85,6 +87,7 @@ uname(name) else rval = -1; } + name->release[sizeof(name->release) - 1] = '\0'; /* The version may have newlines in it, turn them into spaces. */ mib[0] = CTL_KERN; @@ -96,14 +99,14 @@ uname(name) errno = oerrno; else rval = -1; - } else { - for (p = name->version; len--; ++p) { - if (*p == '\n' || *p == '\t') { - if (len > 1) - *p = ' '; - else - *p = '\0'; - } + } + name->version[sizeof(name->version) - 1] = '\0'; + for (p = name->version; len--; ++p) { + if (*p == '\n' || *p == '\t') { + if (len > 1) + *p = ' '; + else + *p = '\0'; } } @@ -117,5 +120,6 @@ uname(name) else rval = -1; } + name->machine[sizeof(name->machine) - 1] = '\0'; return (rval); } diff --git a/lib/libc/gen/uname.c b/lib/libc/gen/uname.c index 63f29566660..93f659e5784 100644 --- a/lib/libc/gen/uname.c +++ b/lib/libc/gen/uname.c @@ -34,7 +34,7 @@ #if defined(LIBC_SCCS) && !defined(lint) /*static char sccsid[] = "From: @(#)uname.c 8.1 (Berkeley) 1/4/94";*/ static const char rcsid[] = - "$Id: uname.c,v 1.2 1994/10/13 20:31:19 wollman Exp $"; + "$Id: uname.c,v 1.3 1995/05/30 05:40:29 rgrimes Exp $"; #endif /* LIBC_SCCS and not lint */ #include @@ -63,6 +63,7 @@ uname(name) else rval = -1; } + name->sysname[sizeof(name->sysname) - 1] = '\0'; mib[0] = CTL_KERN; mib[1] = KERN_HOSTNAME; @@ -74,6 +75,7 @@ uname(name) else rval = -1; } + name->nodename[sizeof(name->nodename) - 1] = '\0'; mib[0] = CTL_KERN; mib[1] = KERN_OSRELEASE; @@ -85,6 +87,7 @@ uname(name) else rval = -1; } + name->release[sizeof(name->release) - 1] = '\0'; /* The version may have newlines in it, turn them into spaces. */ mib[0] = CTL_KERN; @@ -96,14 +99,14 @@ uname(name) errno = oerrno; else rval = -1; - } else { - for (p = name->version; len--; ++p) { - if (*p == '\n' || *p == '\t') { - if (len > 1) - *p = ' '; - else - *p = '\0'; - } + } + name->version[sizeof(name->version) - 1] = '\0'; + for (p = name->version; len--; ++p) { + if (*p == '\n' || *p == '\t') { + if (len > 1) + *p = ' '; + else + *p = '\0'; } } @@ -117,5 +120,6 @@ uname(name) else rval = -1; } + name->machine[sizeof(name->machine) - 1] = '\0'; return (rval); }