$OpenBSD: patch-src_functions_c,v 1.2 2004/08/08 14:02:11 sturm Exp $
--- src/functions.c.orig	Sat May 29 03:10:58 2004
+++ src/functions.c	Mon Aug  2 15:44:54 2004
@@ -215,13 +215,13 @@ case fn_syslog:
     {
     if (strcmp(value,CF_NOCLASS) == 0)
        {
-       strcpy(value,CF_ANYCLASS);
+       (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
        return value;
        }
     
     if (strcmp(value,CF_ANYCLASS) == 0)
        {
-       strcpy(value,CF_NOCLASS);
+       (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
        return value;
        }
     }
@@ -316,46 +316,46 @@ if (strchr(args,','))
 
 if (lstat(args,&statbuf) == -1)
    {
-   strcpy(value,CF_NOCLASS);
+   (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
    return;
    }
  else
     {
     if (fn == fn_fileexists)
        {
-       strcpy(value,CF_ANYCLASS);
+       (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
        return;
        }
     }
  
-strcpy(value,CF_NOCLASS);
+(void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
  
  switch(fn)
     {
     case fn_isdir:
         if (S_ISDIR(statbuf.st_mode))
            {
-           strcpy(value,CF_ANYCLASS);
+           (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
            return;
            }
         break;
     case fn_islink:
         if (S_ISLNK(statbuf.st_mode))
            {
-           strcpy(value,CF_ANYCLASS);
+           (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
            return;
            }
         break;
     case fn_isplain:
         if (S_ISREG(statbuf.st_mode))
            {
-           strcpy(value,CF_ANYCLASS);
+           (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
            return;
            }
         break;
     }
  
- strcpy(value,CF_NOCLASS);
+ (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
 }
 
 /*********************************************************************/
@@ -370,7 +370,7 @@ if (strchr(args,','))
    return;
    }
  
-strcpy(value,CF_NOCLASS);
+(void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
 
 if (!FuzzyMatchParse(args))
    {
@@ -379,7 +379,7 @@ if (!FuzzyMatchParse(args))
 
 if (FuzzySetMatch(args,VIPADDRESS) == 0)
    {
-   strcpy(value,CF_ANYCLASS);
+   (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
    }
 }
 
@@ -394,7 +394,7 @@ void HandleHostRange(char *args,char *va
 
  if (!FuzzyHostParse(args))
     {
-    strcpy(value,CF_NOCLASS);
+    (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
     return;
     }
  /* VDEFAULTBINSERVER.name is relative domain name */
@@ -403,12 +403,12 @@ void HandleHostRange(char *args,char *va
  if (FuzzyHostMatch(args,VDEFAULTBINSERVER.name) == 0)
     {
     Debug("SRDEBUG SUCCESS!\n");
-    strcpy(value,CF_ANYCLASS);
+    (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
     }
  else
     {
     Debug("SRDEBUG FAILURE\n");
-    strcpy(value,CF_NOCLASS);
+    (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
     }
  
  return;
@@ -423,7 +423,7 @@ void HandleCompareStat(enum builtin fn,c
   int count = 0;
 
 FunctionArgs(args,argv,2); 
-strcpy(value,CF_NOCLASS);
+(void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
  
 if (stat(argv[0],&frombuf) == -1)
    {
@@ -440,7 +440,7 @@ switch(fn)
    case fn_newerthan:
        if (frombuf.st_mtime < tobuf.st_mtime)
           {
-          strcpy(value,CF_ANYCLASS);
+          (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
           return;
           }
        break;
@@ -448,7 +448,7 @@ switch(fn)
    case fn_accessedbefore:
        if (frombuf.st_atime < tobuf.st_atime)
           {
-          strcpy(value,CF_ANYCLASS);
+          (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
           return;
           }
        break;
@@ -456,13 +456,13 @@ switch(fn)
    case fn_changedbefore:
        if (frombuf.st_ctime < tobuf.st_ctime)
           {
-          strcpy(value,CF_ANYCLASS);
+          (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
           return;
           }       
        break;
    }
  
-strcpy(value,CF_NOCLASS);
+(void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
 }
 
 
@@ -509,7 +509,7 @@ if (*args == '/')
    
    if (ShellCommandReturnsZero(command))
       {
-      strcpy(value,CF_ANYCLASS);
+      (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
       return;
       }
    }
@@ -518,7 +518,7 @@ if (*args == '/')
     yyerror("ExecResult(/command) must specify an absolute path");
     }
  
- strcpy(value,CF_NOCLASS); 
+ (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE); 
 }
 
 
@@ -536,11 +536,11 @@ Debug("HandleIsDefined(%s)\n",args); 
  
 if (GetMacroValue(CONTEXTID,args))
    {
-   strcpy(value,CF_ANYCLASS);
+   (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
    return;
    }
 
-strcpy(value,CF_NOCLASS); 
+(void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE); 
 }
 
 /*********************************************************************/
@@ -556,7 +556,7 @@ value[0] = '\0';
 
 if (PARSING)
    {
-   strcpy(value,"doinstall");
+   (void)strlcpy(value,"doinstall",CF_EXPANDSIZE);
    return;
    }
  
@@ -611,11 +611,11 @@ FunctionArgs(args,argv,2); 
  
 if (strcmp(argv[0],argv[1]) == 0)
    {
-   strcpy(value,CF_ANYCLASS); 
+   (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE); 
    }
 else
    {
-   strcpy(value,CF_NOCLASS);
+   (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
    } 
 }
 
@@ -641,11 +641,11 @@ ret = LocateNextItemMatching(list,argv[0
      
 if (ret != NULL)
    {
-   strcpy(value,CF_ANYCLASS); 
+   (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE); 
    }
 else
    {
-   strcpy(value,CF_NOCLASS);
+   (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
    }
  
 DeleteItemList(list); 
@@ -985,7 +985,7 @@ first[0] = '\0';
  
 if (psize < 2)
    {
-   strcpy(value,"silly");
+   (void)strlcpy(value,"silly",CF_BUFSIZE);
    CfLog(cferror,"Partitioning of size < 2 is silly","");
    return;
    }
@@ -994,7 +994,7 @@ Verbose("Searching for my peer group in 
 
 if (!((strcmp("random",policy) == 0) || (strcmp("first",policy) == 0)))
    {
-   strcpy(value,"silly");
+   (void)strlcpy(value,"silly",CF_BUFSIZE);
    CfLog(cferror,"Partition leader policy is first/random only","");
    return;
    }
@@ -1149,7 +1149,7 @@ value[0] = '\0'; 
  
 if (psize < 2)
    {
-   strcpy(value,"silly");
+   (void)strlcpy(value,"silly",CF_BUFSIZE);
    CfLog(cferror,"Partitioning of size < 2 is silly","");
    return;
    }
@@ -1158,7 +1158,7 @@ Verbose("Searching for my peer group nei
 
 if (!(strcmp("random",policy) == 0 || strcmp("first",policy) == 0))
    {
-   strcpy(value,"silly");
+   (void)strlcpy(value,"silly",CF_BUFSIZE);
    CfLog(cferror,"Partition leader policy is first/random only","");
    return;
    }
@@ -1286,7 +1286,7 @@ Verbose("This is a method with return va
     yyerror("Redefinition of method return values");
     }
 
-strcpy(value,"noinstall");
+(void)strlcpy(value,"noinstall",CF_EXPANDSIZE);
 }
 
 /*********************************************************************/
@@ -1298,14 +1298,14 @@ Verbose("This is a method with return cl
 
  if (strlen(METHODRETURNCLASSES) == 0)
     {
-    strncpy(METHODRETURNCLASSES,args,CF_BUFSIZE-1);
+    strlcpy(METHODRETURNCLASSES,args,sizeof(METHODRETURNCLASSES));
     }
  else
     {
     yyerror("Redefinition of method return classes");
     }
 
- strcpy(value,"noinstall");
+ (void)strlcpy(value,"noinstall",CF_EXPANDSIZE);
 }
 
 /*********************************************************************/
@@ -1331,7 +1331,7 @@ Debug("ShowState(%s)\n",args); 
 
 if (PARSING)
    {
-   strcpy(value,"doinstall");
+   (void)strlcpy(value,"doinstall",CF_EXPANDSIZE);
    return;
    }
  
@@ -1516,12 +1516,12 @@ if (stat(buffer,&statbuf) == 0)
    
    printf("%s: -----------------------------------------------------------------------------------\n",VPREFIX);
    snprintf(buffer,CF_BUFSIZE,"State of %s peaked at %s\n",args,ctime(&statbuf.st_mtime));
-   strcpy(value,buffer);
+   (void)strlcpy(value,buffer,CF_EXPANDSIZE);
    }
 else 
    {
    snprintf(buffer,CF_BUFSIZE,"State parameter %s is not known or recorded\n",args);   
-   strcpy(value,buffer);
+   (void)strlcpy(value,buffer,CF_EXPANDSIZE);
    }
 
 DeleteItemList(addresses); 
@@ -1548,7 +1548,7 @@ FunctionArgs(args,argv,1);
 
 if (PARSING)
    {
-   strcpy(value,"doinstall");
+   (void)strlcpy(value,"doinstall",CF_EXPANDSIZE);
    return;
    }
 
@@ -1559,7 +1559,7 @@ if (time >= 0)
    CheckFriendConnections(time);
    }
  
-strcpy(value,""); /* No reply */
+(void)strlcpy(value,"",CF_EXPANDSIZE); /* No reply */
 }
 
 /*********************************************************************/
@@ -1629,11 +1629,11 @@ Debug("PrepModule(%s,%s)\n",argv[0],argv
  
 if (CheckForModule(argv[0],argv[1]))
    {
-   strcpy(value,CF_ANYCLASS);
+   (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
    }
 else
    {
-   strcpy(value,CF_NOCLASS);
+   (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
    }
 }
 
@@ -1671,7 +1671,7 @@ if (strchr(args,','))
    return;
    }
 
-strcpy(arg1,UnQuote(args));
+(void)strlcpy(arg1,UnQuote(args),CF_BUFSIZE);
 }
 
 /*********************************************************************/
