diff options
author | markm <markm@FreeBSD.org> | 2001-08-20 12:52:49 +0000 |
---|---|---|
committer | markm <markm@FreeBSD.org> | 2001-08-20 12:52:49 +0000 |
commit | 7aa03eaeb0f567d94a3e968f6c9bd00f5cb59a5c (patch) | |
tree | fd14bdbaec1638413ad33e4ebf4d364b9205bd76 /contrib/opie | |
parent | 4e059b7f961ce0c37564d6417157fa695d541bf7 (diff) | |
download | FreeBSD-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/opie')
-rw-r--r-- | contrib/opie/opieinfo.c | 10 |
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); |