$OpenBSD: patch-wslib_path_c,v 1.1.1.1 2001/01/09 20:59:36 naddy Exp $ --- wslib/path.c.orig Fri Mar 31 22:10:25 2000 +++ wslib/path.c Tue Jan 9 20:59:01 2001 @@ -60,7 +60,7 @@ susergnusteppath(void) if (! path) SErrorCode = SERR_NOMEMORY; else - strcpy(path, gspath); + strlcpy(path, gspath, pathlen); free(gspath); } else { pathlen = strlen(sgethomedir()) + 10; @@ -68,8 +68,8 @@ susergnusteppath(void) if (! path) SErrorCode = SERR_NOMEMORY; else { - strcpy(path, sgethomedir()); - strcat(path, "/GNUstep"); + strlcpy(path, sgethomedir(), pathlen); + strlcat(path, "/GNUstep", pathlen); } } } @@ -133,7 +133,7 @@ sexpandpath(char *path) path++; if (*path=='/' || *path==0) { home = sgethomedir(); - strcat(buffer, home); + strlcat(buffer, home, sizeof(buffer)); } else { int j; j = 0; @@ -145,7 +145,7 @@ sexpandpath(char *path) home = sgetuserhomedir(buffer2); if (!home) return NULL; - strcat(buffer, home); + strlcat(buffer, home, sizeof(buffer)); } } @@ -169,12 +169,12 @@ sexpandpath(char *path) tmp = getenv(buffer2); if (!tmp) { buffer[i] = 0; - strcat(buffer, "$("); - strcat(buffer, buffer2); - strcat(buffer, ")"); + strlcat(buffer, "$(", sizeof(buffer)); + strlcat(buffer, buffer2, sizeof(buffer)); + strlcat(buffer, ")", sizeof(buffer)); i += strlen(buffer2)+3; } else { - strcat(buffer, tmp); + strlcat(buffer, tmp, sizeof(buffer)); i += strlen(tmp); } } else { @@ -184,11 +184,11 @@ sexpandpath(char *path) } tmp = getenv(buffer2); if (!tmp) { - strcat(buffer, "$"); - strcat(buffer, buffer2); + strlcat(buffer, "$", sizeof(buffer)); + strlcat(buffer, buffer2, sizeof(buffer)); i += strlen(buffer2)+1; } else { - strcat(buffer, tmp); + strlcat(buffer, tmp, sizeof(buffer)); i += strlen(tmp); } } @@ -209,7 +209,6 @@ getLocalConfigurationPath(void) char *gspath; gspath = susergnusteppath(); - path = malloc(strlen(gspath) + strlen(DEFAULTS_DIR) + strlen(WMSOUND_DOMAIN)+4); path = malloc(MAXPATHLEN * sizeof(char)); if (! path) { SErrorCode = SERR_NOMEMORY; @@ -218,10 +217,10 @@ getLocalConfigurationPath(void) return NULL; } - strcpy(path, gspath); - strcat(path, DEFAULTS_DIR); - strcat(path, "/"); - strcat(path, WMSOUND_DOMAIN); + strlcpy(path, gspath, MAXPATHLEN); + strlcat(path, DEFAULTS_DIR, MAXPATHLEN); + strlcat(path, "/", MAXPATHLEN); + strlcat(path, WMSOUND_DOMAIN, MAXPATHLEN); return path; } @@ -257,9 +256,9 @@ getGlobalConfigurationPath(void) char *tmpbuffer = strchr(buffer, '\n'); tmpbuffer[0] = '/'; } else - strcat(buffer, "/"); + strlcat(buffer, "/", MAXPATHLEN); - strcat(buffer, WMSOUND_DOMAIN); + strlcat(buffer, WMSOUND_DOMAIN, MAXPATHLEN); result = strdup(buffer); free(buffer);