$OpenBSD: patch-src_functions_c,v 1.3 2004/10/01 21:22:15 sturm Exp $
--- src/functions.c.orig	Mon Aug 16 22:41:21 2004
+++ src/functions.c	Fri Oct  1 23:14:47 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;
        }
     }
@@ -318,46 +318,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);
 }
 
 /*********************************************************************/
@@ -372,7 +372,7 @@ if (strchr(args,','))
    return;
    }
  
-strcpy(value,CF_NOCLASS);
+(void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
 
 if (!FuzzyMatchParse(args))
    {
@@ -387,7 +387,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;
       }
    }
@@ -398,12 +398,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);
 }
 
 /*********************************************************************/
@@ -416,7 +416,7 @@ Debug("SRDEBUG args=%s value=%s\n",args,
 
 if (!FuzzyHostParse(args))
    {
-   strcpy(value,CF_NOCLASS);
+   (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
    return;
    }
 /* VDEFAULTBINSERVER.name is relative domain name */
@@ -425,12 +425,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;
@@ -444,7 +444,7 @@ void HandleCompareStat(enum builtin fn,c
   char argv[CF_MAXFARGS][CF_MAXVARSIZE];
 
 FunctionArgs(args,argv,2); 
-strcpy(value,CF_NOCLASS);
+(void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE);
  
 if (stat(argv[0],&frombuf) == -1)
    {
@@ -461,7 +461,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;
@@ -469,7 +469,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;
@@ -477,13 +477,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);
 }
 
 
@@ -530,7 +530,7 @@ if (*args == '/')
    
    if (ShellCommandReturnsZero(command))
       {
-      strcpy(value,CF_ANYCLASS);
+      (void)strlcpy(value,CF_ANYCLASS,CF_EXPANDSIZE);
       return;
       }
    }
@@ -539,7 +539,7 @@ if (*args == '/')
     yyerror("ExecResult(/command) must specify an absolute path");
     }
  
- strcpy(value,CF_NOCLASS); 
+ (void)strlcpy(value,CF_NOCLASS,CF_EXPANDSIZE); 
 }
 
 
@@ -557,11 +557,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); 
 }
 
 /*********************************************************************/
@@ -577,7 +577,7 @@ value[0] = '\0';
 
 if (PARSING)
    {
-   strcpy(value,"doinstall");
+   (void)strlcpy(value,"doinstall",CF_EXPANDSIZE);
    return;
    }
  
@@ -631,11 +631,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);
    } 
 }
 
@@ -660,11 +660,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); 
@@ -1009,7 +1009,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;
    }
@@ -1018,7 +1018,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;
    }
@@ -1173,7 +1173,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;
    }
@@ -1182,7 +1182,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;
    }
@@ -1305,7 +1305,7 @@ for (ip = SplitStringAsItemList(args,','
    AppendItem(&METHODRETURNVARS,args,CLASSBUFF);
    }
  
-strcpy(value,"noinstall");
+(void)strlcpy(value,"noinstall",CF_EXPANDSIZE);
 }
 
 /*********************************************************************/
@@ -1321,7 +1321,7 @@ for (ip = SplitStringAsItemList(args,','
    AppendItem(&METHODRETURNCLASSES,args,CLASSBUFF);
    }
 
-strcpy(value,"noinstall");
+(void)strlcpy(value,"noinstall",CF_EXPANDSIZE);
 }
 
 /*********************************************************************/
@@ -1347,7 +1347,7 @@ Debug("ShowState(%s)\n",args); 
 
 if (PARSING)
    {
-   strcpy(value,"doinstall");
+   (void)strlcpy(value,"doinstall",CF_EXPANDSIZE);
    return;
    }
  
@@ -1532,12 +1532,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); 
@@ -1564,7 +1564,7 @@ FunctionArgs(args,argv,1);
 
 if (PARSING)
    {
-   strcpy(value,"doinstall");
+   (void)strlcpy(value,"doinstall",CF_EXPANDSIZE);
    return;
    }
 
@@ -1575,7 +1575,7 @@ if (time >= 0)
    CheckFriendConnections(time);
    }
  
-strcpy(value,""); /* No reply */
+(void)strlcpy(value,"",CF_EXPANDSIZE); /* No reply */
 }
 
 /*********************************************************************/
@@ -1648,11 +1648,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);
    }
 }
 
@@ -1690,7 +1690,7 @@ if (strchr(args,','))
    return;
    }
 
-strcpy(arg1,UnQuote(args));
+(void)strlcpy(arg1,UnQuote(args),CF_BUFSIZE);
 }
 
 /*********************************************************************/
