$OpenBSD: patch-src_functions_c,v 1.5 2005/10/27 21:47:28 sturm Exp $
--- src/functions.c.orig	Sat Aug 13 15:10:56 2005
+++ src/functions.c	Fri Oct 21 16:35:55 2005
@@ -247,13 +247,13 @@ switch (fn = FunctionStringToCode(name))
     {
     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;
        }
     }
@@ -347,46 +347,46 @@ FunctionArgs(args,argv,1);
 
 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);
 }
 
 /*********************************************************************/
@@ -401,7 +401,7 @@ if (strchr(args,','))
    return;
    }
  
-strcpy(value,CF_NOCLASS);
+(void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
 
 if (!FuzzyMatchParse(args))
    {
@@ -416,7 +416,7 @@ for (ip = IPADDRESSES; ip != NULL; ip = 
    if (FuzzySetMatch(args,ip->name) == 0)
       {
       Debug("IPRange Matched\n");
-      strcpy(value,CF_ANYCLASS);
+      (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
       return;
       }
    }
@@ -427,12 +427,12 @@ Debug("Checking IP Range against RDNS %s
 if (FuzzySetMatch(args,VIPADDRESS) == 0)
    {
    Debug("IPRange Matched\n");
-   strcpy(value,CF_ANYCLASS);
+   (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
    return;
    }
 
 Debug("IPRange did not match\n");
-strcpy(value,CF_NOCLASS);
+(void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
 }
 
 /*********************************************************************/
@@ -445,7 +445,7 @@ Debug("SRDEBUG args=%s value=%s\n",args,
 
 if (!FuzzyHostParse(args))
    {
-   strcpy(value,CF_NOCLASS);
+   (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
    return;
    }
 
@@ -455,12 +455,12 @@ if (!FuzzyHostParse(args))
 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;
@@ -474,7 +474,7 @@ void HandleCompareStat(enum builtin fn,c
   char argv[CF_MAXFARGS][CF_EXPANDSIZE];
 
 FunctionArgs(args,argv,2); 
-strcpy(value,CF_NOCLASS);
+(void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
  
 if (stat(argv[0],&frombuf) == -1)
    {
@@ -491,7 +491,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;
@@ -499,7 +499,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;
@@ -507,13 +507,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);
 }
 
 
@@ -560,7 +560,7 @@ if (*args == '/')
    
    if (ShellCommandReturnsZero(command))
       {
-      strcpy(value,CF_ANYCLASS);
+      (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
       return;
       }
    }
@@ -569,7 +569,7 @@ if (*args == '/')
     yyerror("ExecResult(/command) must specify an absolute path");
     }
  
- strcpy(value,CF_NOCLASS); 
+ (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE); 
 }
 
 
@@ -587,11 +587,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); 
 }
 
 /*********************************************************************/
@@ -607,7 +607,7 @@ value[0] = '\0';
 
 if (PARSING)
    {
-   strcpy(value,"doinstall");
+   (void)strlcpy(value,"doinstall",CF_EXPANDSIZE);
    return;
    }
  
@@ -661,11 +661,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);
    } 
 }
 
@@ -689,11 +689,11 @@ if ((a != CF_NOVAL) && (b != CF_NOVAL)) 
       {
       if (a > b)
          {
-         strcpy(value,CF_ANYCLASS);
+         (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
          }
       else
          {
-         strcpy(value,CF_NOCLASS);
+         (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
          }
       return;
       }
@@ -701,11 +701,11 @@ if ((a != CF_NOVAL) && (b != CF_NOVAL)) 
       {
       if (a < b)  
          {
-         strcpy(value,CF_ANYCLASS);
+         (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
          }
       else
          {
-         strcpy(value,CF_NOCLASS);
+         (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
          }
       return;
       }
@@ -717,22 +717,22 @@ if (strcmp(argv[0],argv[1]) > 0)
    {
    if (ch == '+')
       {
-      strcpy(value,CF_ANYCLASS);
+      (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
       }
    else
       {
-      strcpy(value,CF_NOCLASS);
+      (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
       }
    }
 else
    {
    if (ch == '+')
       {
-      strcpy(value,CF_NOCLASS);
+      (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
       }
    else
       {
-      strcpy(value,CF_ANYCLASS);
+      (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
       }
    } 
 }
@@ -760,11 +760,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); 
@@ -1169,7 +1169,7 @@ first[0] = '\0';
  
 if (psize < 2)
    {
-   strcpy(value,"silly");
+   (void)strlcpy(value,"silly",CF_EXPANDSIZE);
    CfLog(cferror,"Partitioning of size < 2 is silly","");
    return;
    }
@@ -1178,7 +1178,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_EXPANDSIZE);
    CfLog(cferror,"Partition leader policy is first/random only","");
    return;
    }
@@ -1333,7 +1333,7 @@ value[0] = '\0'; 
  
 if (psize < 2)
    {
-   strcpy(value,"silly");
+   (void)strlcpy(value,"silly",CF_EXPANDSIZE);
    CfLog(cferror,"Partitioning of size < 2 is silly","");
    return;
    }
@@ -1342,7 +1342,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_EXPANDSIZE);
    CfLog(cferror,"Partition leader policy is first/random only","");
    return;
    }
@@ -1465,7 +1465,7 @@ for (ip = SplitStringAsItemList(args,','
    AppendItem(&METHODRETURNVARS,ip->name,CLASSBUFF);
    }
  
-strcpy(value,"noinstall");
+(void)strlcpy(value,"noinstall",CF_EXPANDSIZE);
 }
 
 /*********************************************************************/
@@ -1481,7 +1481,7 @@ for (ip = SplitStringAsItemList(args,','
    AppendItem(&METHODRETURNCLASSES,args,CLASSBUFF);
    }
 
-strcpy(value,"noinstall");
+(void)strlcpy(value,"noinstall",CF_EXPANDSIZE);
 }
 
 /*********************************************************************/
@@ -1507,7 +1507,7 @@ Debug("ShowState(%s)\n",args); 
 
 if (PARSING)
    {
-   strcpy(value,"doinstall");
+   (void)strlcpy(value,"doinstall",CF_EXPANDSIZE);
    return;
    }
  
@@ -1693,12 +1693,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); 
@@ -1725,7 +1725,7 @@ FunctionArgs(args,argv,1);
 
 if (PARSING)
    {
-   strcpy(value,"doinstall");
+   (void)strlcpy(value,"doinstall",CF_EXPANDSIZE);
    return;
    }
 
@@ -1736,7 +1736,7 @@ if (time >= 0)
    CheckFriendConnections(time);
    }
  
-strcpy(value,""); /* No reply */
+(void)strlcpy(value,"",CF_EXPANDSIZE); /* No reply */
 }
 
 /*********************************************************************/
@@ -1810,11 +1810,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);
    }
 }
 
