From: Junio C Hamano Date: Sat, 24 Feb 2007 08:51:34 GMT Subject: Re: [PATCH] Limit filename for format-patch Message-ID: <7vtzxcym3t.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <20070223222606.28660.46208.stgit@lathund.dewire.com> Robin Rosenberg writes: > -static void reopen_stdout(struct commit *commit, int nr, int keep_subject) > +static int reopen_stdout(struct commit *commit, int nr, int keep_subject) > { > - char filename[1024]; > + char filename[PATH_MAX]; > char *sol; > int len = 0; > - int suffix_len = strlen(fmt_patch_suffix) + 10; /* ., NUL and slop */ > + int suffix_len = strlen(fmt_patch_suffix) + 1; > > if (output_directory) { > - strlcpy(filename, output_directory, 1000); > + if (strlen(output_directory) >= sizeof(filename) - 64 - suffix_len) > + return error("name of output directory is too long"); > + strlcpy(filename, output_directory, sizeof(filename) - suffix_len); Sorry for a late doubt, but I started wondering if we should use NAME_MAX instead of hardcoded 64. Purists might argue for using pathconf() but I think it is an overkill. NAME_MAX is 255 on Linux, POSIX says it should be 14 at least (and further says if the platform supports only smaller max, NAME_MAX should not be defined -- heh). I do not know how universal NAME_MAX is defined, and I hate dealing with header incompatibility across different systems, so I am tempted to just do something like: #define FORMAT_PATCH_NAME_MAX 64 locally, and use that instead.