summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authormarkm <markm@FreeBSD.org>2001-08-20 12:52:49 +0000
committermarkm <markm@FreeBSD.org>2001-08-20 12:52:49 +0000
commit7aa03eaeb0f567d94a3e968f6c9bd00f5cb59a5c (patch)
treefd14bdbaec1638413ad33e4ebf4d364b9205bd76 /contrib
parent4e059b7f961ce0c37564d6417157fa695d541bf7 (diff)
downloadFreeBSD-src-7aa03eaeb0f567d94a3e968f6c9bd00f5cb59a5c.zip
FreeBSD-src-7aa03eaeb0f567d94a3e968f6c9bd00f5cb59a5c.tar.gz
Fix overflow problem when giving a username that is too long.
Also minor declaration/header fixes while auditing the code.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/opie/opieinfo.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/contrib/opie/opieinfo.c b/contrib/opie/opieinfo.c
index a5d0d57..614dad6 100644
--- a/contrib/opie/opieinfo.c
+++ b/contrib/opie/opieinfo.c
@@ -35,14 +35,17 @@ $FreeBSD$
*/
#include "opie_cfg.h"
+#include <sys/param.h>
+#include <errno.h>
#include <stdio.h>
+#include <string.h>
#if HAVE_UNISTD_H
#include <unistd.h>
#endif /* HAVE_UNISTD_H */
#include "opie.h"
/* extern char *optarg; */
-extern int errno, optind;
+/* extern int errno, optind; */
static char *getusername FUNCTION_NOARGS
{
@@ -82,6 +85,11 @@ int main FUNCTION((argc, argv), int argc AND char *argv[])
} else
username = getusername();
+ if (strlen(username) >= MAXLOGNAME) {
+ fprintf(stderr, "Username too long.\n");
+ exit(1);
+ }
+
if ((i = opielookup(&opie, username)) && (i != 2)) {
if (i < 0)
fprintf(stderr, "Error opening database! (errno = %d)\n", errno);
OpenPOWER on IntegriCloud