$OpenBSD: patch-src_link_c,v 1.2 2004/08/08 14:02:11 sturm Exp $ --- src/link.c.orig Sat Apr 17 10:11:06 2004 +++ src/link.c Mon Aug 2 13:30:35 2004 @@ -61,23 +61,23 @@ for (dirp = readdir(dirh); dirp != NULL; continue; } - strcpy(pcwdto,to); /* Assemble pathnames */ + (void)strlcpy(pcwdto,to,sizeof(pcwdto)); /* Assemble pathnames */ AddSlash(pcwdto); if (BufferOverflow(pcwdto,dirp->d_name)) { FatalError("Can't build filename in LinkChildFiles"); } - strcat(pcwdto,dirp->d_name); + (void)strlcat(pcwdto,dirp->d_name,sizeof(pcwdto)); - strcpy(pcwdfrom,from); + (void)strlcpy(pcwdfrom,from,sizeof(pcwdfrom)); AddSlash(pcwdfrom); if (BufferOverflow(pcwdfrom,dirp->d_name)) { FatalError("Can't build filename in LinkChildFiles"); } - strcat(pcwdfrom,dirp->d_name); + (void)strlcat(pcwdfrom,dirp->d_name,sizeof(pcwdfrom)); switch (type) { @@ -152,13 +152,13 @@ for (sp = path+strlen(path); sp != path- if (MatchAFileSystem(server,lastlink)) { - strcpy(odir,server); + (void)strlcpy(odir,server,sizeof(odir)); if (BufferOverflow(odir,relpath)) { FatalError("culprit: LinkChildren()"); } - strcat(odir,relpath); + (void)strlcat(odir,relpath,sizeof(odir)); if ((dirh = opendir(odir)) == NULL) { @@ -174,7 +174,7 @@ for (sp = path+strlen(path); sp != path- continue; } - strcpy(from,path); + (void)strlcpy(from,path,sizeof(from)); AddSlash(from); if (BufferOverflow(from,dirp->d_name)) @@ -182,9 +182,9 @@ for (sp = path+strlen(path); sp != path- FatalError("culprit: LinkChildren()"); } - strcat(from,dirp->d_name); + (void)strlcat(from,dirp->d_name,sizeof(from)); - strcpy(to,odir); + (void)strlcpy(to,odir,sizeof(to)); AddSlash(to); if (BufferOverflow(to,dirp->d_name)) @@ -192,7 +192,7 @@ for (sp = path+strlen(path); sp != path- FatalError("culprit: LinkChildren()"); } - strcat(to,dirp->d_name); + (void)strlcat(to,dirp->d_name,sizeof(to)); Debug2("LinkChild from = %s to = %s\n",from,to); @@ -299,9 +299,9 @@ for (dirp = readdir(dirh); dirp != NULL; continue; } - strcpy(newfrom,from); /* Assemble pathname */ + (void)strlcpy(newfrom,from,sizeof(newfrom)); /* Assemble pathname */ AddSlash(newfrom); - strcpy(newto,to); + (void)strlcpy(newto,to,sizeof(newto)); AddSlash(newto); if (BufferOverflow(newfrom,dirp->d_name)) @@ -310,7 +310,7 @@ for (dirp = readdir(dirh); dirp != NULL; return true; } - strcat(newfrom,dirp->d_name); + (void)strlcat(newfrom,dirp->d_name,sizeof(newfrom)); if (BufferOverflow(newto,dirp->d_name)) { @@ -318,7 +318,7 @@ for (dirp = readdir(dirh); dirp != NULL; return true; } - strcat(newto,dirp->d_name); + (void)strlcat(newto,dirp->d_name,sizeof(newto)); if (TRAVLINKS) { @@ -403,7 +403,7 @@ memset(&ip,0,sizeof(ip)); if ((*to_tmp != '/') && (*to_tmp != '.')) /* links without a directory reference */ { - strcpy(to,"./"); + (void)strlcpy(to,"./",sizeof(to)); } if (strlen(to_tmp)+3 > CF_BUFSIZE) @@ -412,7 +412,7 @@ if (strlen(to_tmp)+3 > CF_BUFSIZE) return false; } -strcat(to,to_tmp); +(void)strlcat(to,to_tmp,sizeof(to)); Debug2("Linkfiles(%s,%s)\n",from,to); @@ -461,12 +461,12 @@ if (IsWildItemIn(VCOPYLINKS,lastnode) || if (*to != '/') /* relative path, must still check if exists */ { Debug("Relative link destination detected: %s\n",to); - strcpy(absto,AbsLinkPath(from,to)); + (void)strlcpy(absto,AbsLinkPath(from,to),sizeof(absto)); Debug("Absolute path to relative link = %s, from %s\n",absto,from); } else { - strcpy(absto,to); + (void)strlcpy(absto,to,sizeof(absto)); } if (!nofile) @@ -501,12 +501,12 @@ if (lstat(from,&buf) == 0) } saved[0] = '\0'; - strcpy(saved,from); + (void)strlcpy(saved,from,sizeof(saved)); - sprintf(stamp, "_%d_%s", CFSTARTTIME, CanonifyName(ctime(&STAMPNOW))); - strcat(saved,stamp); + (void)snprintf(stamp, sizeof(stamp), "_%d_%s", CFSTARTTIME, CanonifyName(ctime(&STAMPNOW))); + (void)strlcat(saved,stamp,sizeof(saved)); - strcat(saved,CF_SAVED); + (void)strlcat(saved,CF_SAVED,sizeof(saved)); if (rename(from,saved) == -1) { @@ -532,13 +532,13 @@ if (lstat(from,&buf) == 0) } saved[0] = '\0'; - strcpy(saved,from); + (void)strlcpy(saved,from,sizeof(saved)); - sprintf(stamp, "_%d_%s", CFSTARTTIME, CanonifyName(ctime(&STAMPNOW))); - strcat(saved,stamp); + (void)snprintf(stamp, sizeof(stamp), "_%d_%s", CFSTARTTIME, CanonifyName(ctime(&STAMPNOW))); + (void)strlcat(saved,stamp,sizeof(saved)); - strcat(saved,CF_SAVED); - strcat(saved,".dir"); + (void)strlcat(saved,CF_SAVED,sizeof(saved)); + (void)strlcat(saved,".dir",sizeof(saved)); if (stat(saved,&savebuf) != -1) { @@ -693,7 +693,7 @@ Debug("LEVELS = %d\n",levels); memset(buff,0,CF_BUFSIZE); -strcat(buff,"./"); +(void)strlcat(buff,"./",sizeof(buff)); while(--levels > 0) { @@ -702,7 +702,7 @@ while(--levels > 0) return false; } - strcat(buff,"../"); + (void)strlcat(buff,"../",sizeof(buff)); } if (BufferOverflow(buff,commonto)) @@ -710,7 +710,7 @@ if (BufferOverflow(buff,commonto)) return false; } -strcat(buff,commonto); +(void)strlcat(buff,commonto,sizeof(buff)); return LinkFiles(from,buff,inclusions,exclusions,copy,nofile,ptr); } @@ -728,14 +728,14 @@ Debug2("AbsoluteLink(%s,%s)\n",from,to); if (*to == '.') { - strcpy(LINKTO,from); + (void)strlcpy(LINKTO,from,CF_BUFSIZE); ChopLastNode(LINKTO); AddSlash(LINKTO); - strcat(LINKTO,to); + (void)strlcat(LINKTO,to,CF_BUFSIZE); } else { - strcpy(LINKTO,to); + (void)strlcpy(LINKTO,to,CF_BUFSIZE); } CompressPath(absto,LINKTO); @@ -758,7 +758,7 @@ if (!nofile) } else { - strcpy(expand,absto); + (void)strlcpy(expand,absto,sizeof(expand)); } CompressPath(LINKTO,expand); @@ -816,7 +816,7 @@ if (readlink(name,linkbuf,CF_BUFSIZE-1) if (linkbuf[0] != '/') { - strcpy(linkpath,name); /* Get path to link */ + (void)strlcpy(linkpath,name,sizeof(linkpath)); /* Get path to link */ for (sp = linkpath+strlen(linkpath); (*sp != '/') && (sp >= linkpath); sp-- ) { @@ -824,7 +824,7 @@ if (linkbuf[0] != '/') } } -strcat(linkpath,linkbuf); +(void)strlcat(linkpath,linkbuf,sizeof(linkpath)); CompressPath(VBUFF,linkpath); if (stat(VBUFF,&statbuf) == -1) /* link points nowhere */ @@ -962,12 +962,12 @@ if (ENFORCELINKS) } saved[0] = '\0'; - strcpy(saved,from); + (void)strlcpy(saved,from,sizeof(saved)); - sprintf(stamp, "_%d_%s", CFSTARTTIME, CanonifyName(ctime(&STAMPNOW))); - strcat(saved,stamp); + (void)snprintf(stamp, sizeof(stamp), "_%d_%s", CFSTARTTIME, CanonifyName(ctime(&STAMPNOW))); + (void)strlcat(saved,stamp,sizeof(saved)); - strcat(saved,CF_SAVED); + (void)strlcat(saved,CF_SAVED,sizeof(saved)); if (rename(from,saved) == -1) { @@ -1059,10 +1059,10 @@ for (sp = from; *sp != '\0'; sp++) } else { - strcat(dest,"/"); + (void)strlcat(dest,"/",CF_BUFSIZE); } - strcat(dest,node); + (void)strlcat(dest,node,CF_BUFSIZE); if (lstat(dest,&statbuf) == -1) /* File doesn't exist so we can stop here */ { @@ -1091,11 +1091,11 @@ for (sp = from; *sp != '\0'; sp++) { return false; } - strcat(dest,buff); + (void)strlcat(dest,buff,CF_BUFSIZE); } else if (buff[0] == '/') { - strcpy(dest,buff); + (void)strlcpy(dest,buff,CF_BUFSIZE); DeleteSlash(dest); if (strcmp(dest,from) == 0) @@ -1113,7 +1113,7 @@ for (sp = from; *sp != '\0'; sp++) { ChopLastNode(dest); AddSlash(dest); - strcat(dest,buff); + (void)strlcat(dest,buff,CF_BUFSIZE); DeleteSlash(dest); if (strcmp(dest,from) == 0) @@ -1153,7 +1153,7 @@ if (*relto == '/') FatalError(""); } -strcpy(destination,from); /* reuse to save stack space */ +(void)strlcpy(destination,from,sizeof(destination)); /* reuse to save stack space */ for (sp = relto; *sp != '\0'; sp++) { @@ -1181,14 +1181,14 @@ while (pop > 0) if (strlen(destination) == 0) { - strcpy(destination,"/"); + (void)strlcpy(destination,"/",sizeof(destination)); } else { AddSlash(destination); } -strcat(destination,sp); +(void)strlcat(destination,sp,sizeof(destination)); Debug("Reconstructed absolute linkname = %s\n",destination); return destination; }