$OpenBSD: patch-Source_kwsys_CommandLineArguments_cxx,v 1.2 2006/07/31 23:55:52 espie Exp $
--- Source/kwsys/CommandLineArguments.cxx.orig	Mon Jul 31 16:49:59 2006
+++ Source/kwsys/CommandLineArguments.cxx	Tue Aug  1 00:32:19 2006
@@ -333,16 +333,18 @@ void CommandLineArguments::GetRemainingA
 
   // Copy Argv0 as the first argument
   char** args = new char*[ size ];
-  args[0] = new char[ this->Internals->Argv0.size() + 1 ];
-  strcpy(args[0], this->Internals->Argv0.c_str());
+  size_t sz = this->Internals->Argv0.size() + 1;
+  args[0] = new char[ sz ];
+  strlcpy(args[0], this->Internals->Argv0.c_str(), sz);
   int cnt = 1;
 
   // Copy everything after the LastArgument, since that was not parsed.
   for ( cc = this->Internals->LastArgument+1; 
     cc < this->Internals->Argv.size(); cc ++ )
     {
-    args[cnt] = new char[ this->Internals->Argv[cc].size() + 1];
-    strcpy(args[cnt], this->Internals->Argv[cc].c_str());
+    size_t sz2 = this->Internals->Argv[cc].size() + 1;
+    args[cnt] = new char[ sz2 ];
+    strlcpy(args[cnt], this->Internals->Argv[cc].c_str(), sz2);
     cnt ++;
     }
   *argc = cnt;
@@ -594,7 +596,7 @@ void CommandLineArguments::GenerateHelp(
 
   // Create format for that string
   char format[80];
-  sprintf(format, "  %%-%ds  ", static_cast<unsigned int>(maxlen));
+  snprintf(format, sizeof format, "  %%-%ds  ", static_cast<unsigned int>(maxlen));
 
   maxlen += 4; // For the space before and after the option
 
