$OpenBSD: patch-inststr_c,v 1.3 2009/03/08 21:57:24 stsp Exp $ --- inststr.c.orig Wed May 14 07:33:55 2008 +++ inststr.c Thu Mar 5 23:07:12 2009 @@ -20,7 +20,7 @@ inststr(int argc, char **argv, char **environ, char *s for (ptr = argv[0]; *ptr; *(ptr++) = '\0'); - strcpy(argv[0], src); + strlcpy(argv[0], src, sizeof(argv[0])); } else { /* Stolen from the source to perl 4.036 (assigning to $0) */ @@ -31,8 +31,9 @@ inststr(int argc, char **argv, char **environ, char *s /* than lower numbered elements. */ char *ptr, *ptr2; int count; + int aligned; UL mask = ~(UL)(PTRSIZE == 4 ? 3 : PTRSIZE == 8 ? 7 : PTRSIZE == 16 ? 15 : 0); - int aligned = (mask < ~(UL)0) && (((UL)(argv[0]) & mask) == (UL)(argv[0])); + aligned = (mask < ~(UL)0) && (((UL)(argv[0]) & mask) == (UL)(argv[0])); ptr = argv[0] + strlen(argv[0]); if (argv[argc - 1] >= argv[1]) { /* argv pointers in ascending memory order */