$OpenBSD: patch-src_cfagent_c,v 1.4 2005/07/21 15:16:46 aanriot Exp $
--- src/cfagent.c.orig	Thu Apr  7 15:29:49 2005
+++ src/cfagent.c	Fri Jul 15 12:24:00 2005
@@ -206,7 +206,7 @@ void Initialize(int argc,char *argv[])
   unsigned char s[16];
   char ebuff[CF_EXPANDSIZE];
   
-strcpy(VDOMAIN,CF_START_DOMAIN);
+(void)strlcpy(VDOMAIN,CF_START_DOMAIN,sizeof(VDOMAIN));
 
 PreLockState();
 
@@ -219,7 +219,7 @@ VMAILSERVER[0] = '\0';
 ALLCLASSBUFFER[0] = '\0';
 VREPOSITORY = strdup("\0");
 
-strcpy(METHODNAME,"cf-nomethod"); 
+(void)strlcpy(METHODNAME,"cf-nomethod",sizeof(METHODNAME)); 
 METHODREPLYTO[0] = '\0';
 METHODFOR[0] = '\0';
  
@@ -227,8 +227,8 @@ METHODFOR[0] = '\0';
 re_syntax_options |= RE_INTERVALS;
 #endif
  
-strcpy(VINPUTFILE,"cfagent.conf");
-strcpy(VNFSTYPE,"nfs");
+(void)strlcpy(VINPUTFILE,"cfagent.conf",CF_BUFSIZE);
+(void)strlcpy(VNFSTYPE,"nfs",sizeof(VNFSTYPE));
 
 IDClasses();
  
@@ -271,27 +271,28 @@ for (i = 1; i < argc; i++)
 
  /* XXX Initialize workdir for non privileged users */
 
- strcpy(CFWORKDIR,WORKDIR);
+ (void)strlcpy(CFWORKDIR,WORKDIR,sizeof(CFWORKDIR));
 
  if (getuid() > 0)
     {
     char *homedir;
     if ((homedir = getenv("HOME")) != NULL)
        {
-       strcpy(CFWORKDIR,homedir);
-       strcat(CFWORKDIR,"/.cfagent");
+       (void)strlcpy(CFWORKDIR,homedir,sizeof(CFWORKDIR));
+       (void)strlcat(CFWORKDIR,"/.cfagent",sizeof(CFWORKDIR));
        }
     }
  
- sprintf(ebuff,"%s/state/cf_procs",CFWORKDIR);
+ (void)snprintf(ebuff,sizeof(ebuff),"%s/state/cf_procs",CFWORKDIR);
  
  if (stat(ebuff,&statbuf) == -1)
     {
     CreateEmptyFile(ebuff);
     }
  
- strcpy(VLOGDIR,CFWORKDIR); 
- strcpy(VLOCKDIR,VLOGDIR);  /* Same since 2.0.a8 */
+ (void)strlcpy(VLOGDIR,CFWORKDIR,CF_BUFSIZE); 
+ (void)strlcpy(VLOCKDIR,VLOGDIR,CF_BUFSIZE);  /* Same since 2.0.a8 */
+
  
  OpenSSL_add_all_algorithms();
  ERR_load_crypto_strings();
@@ -324,8 +325,8 @@ if (NOPRECONFIG)
    return;
    }
 
-strcpy(VPREFIX,"cfengine:");
-strcat(VPREFIX,VUQNAME);
+(void)strlcpy(VPREFIX,"cfengine:",40);
+(void)strlcat(VPREFIX,VUQNAME, 40);
  
 if ((sp=getenv(CF_INPUTSVAR)) != NULL)
    {
@@ -618,8 +619,8 @@ if (strlen(ebuff) != 0)
    }
 else
    {
-   strcpy(VPREFIX,"cfengine:");
-   strcat(VPREFIX,VUQNAME);
+   (void)strlcpy(VPREFIX,"cfengine:",40);
+   (void)strlcat(VPREFIX,VUQNAME,40);
    }
 
 p2 = SortItemListNames(VHEAP);
@@ -766,7 +767,7 @@ if (VACTIONSEQ == NULL)
    Warning("perhaps cfagent.conf/update.conf have not yet been set up?");
    }
 
-sprintf(id,"%d",geteuid());   /* get effective user id */
+(void)snprintf(id,sizeof(id),"%d",geteuid());   /* get effective user id */
 
 if (VACCESSLIST != NULL && !IsItemIn(VACCESSLIST,id))
    {
@@ -921,7 +922,7 @@ if (OptionIs(CONTEXTID,"DryRun",true))
 
 if (GetMacroValue(CONTEXTID,"BinaryPaddingChar"))
    {
-   strcpy(ebuff,GetMacroValue(CONTEXTID,"BinaryPaddingChar"));
+   (void)strlcpy(ebuff,GetMacroValue(CONTEXTID,"BinaryPaddingChar"),sizeof(ebuff));
    
    if (ebuff[0] == '\\')
       {
@@ -1106,7 +1107,7 @@ if ((tloc = time((time_t *)NULL)) == -1)
 
 CFSTARTTIME = tloc;
 
-snprintf(vbuff,CF_BUFSIZE,"%s",ctime(&tloc));
+snprintf(vbuff,CF_MAXVARSIZE,"%s",ctime(&tloc));
 
 Verbose("Reference time set to %s\n",ctime(&tloc));
 
@@ -1491,7 +1492,7 @@ while (*sp != '\0')
       {
       VIFELAPSED = VDEFAULTIFELAPSED;
       VEXPIREAFTER = VDEFAULTEXPIREAFTER;
-      strcpy(actiontxt,cbuff);
+      (void)strlcpy(actiontxt,cbuff,sizeof(actiontxt));
       continue;
       }
    else
@@ -1926,8 +1927,8 @@ for (ip = VHEAP; ip != NULL; ip=ip->next
       else
          {
          size++; /* Allow for : separator */
-         strcat(ALLCLASSBUFFER,ip->name);
-         strcat(ALLCLASSBUFFER,":");
+         (void)strlcat(ALLCLASSBUFFER,ip->name,sizeof(ALLCLASSBUFFER));
+         (void)strlcat(ALLCLASSBUFFER,":",sizeof(ALLCLASSBUFFER));
          }
 
       fprintf(fp,"%s\n",ip->name);
@@ -1946,8 +1947,8 @@ for (ip = VHEAP; ip != NULL; ip=ip->next
       else
          {
          size++; /* Allow for : separator */
-         strcat(ALLCLASSBUFFER,ip->name);
-         strcat(ALLCLASSBUFFER,":");         
+         (void)strlcat(ALLCLASSBUFFER,ip->name,sizeof(ALLCLASSBUFFER));
+         (void)strlcat(ALLCLASSBUFFER,":",sizeof(ALLCLASSBUFFER));
          }
       
       fprintf(fp,"%s\n",ip->name);
