changeset 13584:fc320b2833d3

2018 makedbm overwrites and overflows constant string Reviewed by: Robert Mustacchi <rm@joyent.com> Reviewed by: Garrett D'Amore <garrett@damore.org> Reviewed by: Joshua M. Clulow <josh@sysmgr.org> Approved by: Gordon Ross <gwr@nexenta.com>
author Richard Lowe <richlowe@richlowe.net>
date Sun, 22 Jan 2012 05:35:33 +0000
parents fabd461f883f
children 411be0f9d82b
files usr/src/cmd/ypcmd/makedbm.c
diffstat 1 files changed, 5 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/cmd/ypcmd/makedbm.c	Mon May 16 05:36:40 2011 +0100
+++ b/usr/src/cmd/ypcmd/makedbm.c	Sun Jan 22 05:35:33 2012 +0000
@@ -33,8 +33,6 @@
  * California.
  */
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
-
 #undef NULL
 #include <stdio.h>
 #include <sys/types.h>
@@ -128,7 +126,7 @@
 	char *last_slash, *next_to_last_slash;
 	char *infilename, *outfilename, *mastername, *domainname,
 	    *interdomain_bind, *security, *lower_case_keys;
-	char *key_sep = DEFAULT_SEP;
+	char key_sep[] = DEFAULT_SEP;
 	char local_host[MAX_MASTER_NAME];
 	int cnt, i;
 	DBM *fdb;
@@ -179,14 +177,14 @@
 					security = argv[0];
 					break;
 				case 'S' :
-					strcpy(key_sep, argv[1]);
-					argv++;
-					argc--;
-					if (strlen(key_sep) != 1) {
+					if (strlen(argv[1]) != 1) {
 						fprintf(stderr,
 							"bad separator\n");
 						usage();
 					}
+					key_sep[0] = argv[1][0];
+					argv++;
+					argc--;
 					break;
 				case 'D' :
 					num_del_to_match = atoi(argv[1]);