Re: [PATCH] Limit filename for format-patch
- From
Junio C Hamano <junkio@cox.net>
- Date
- Feb 24, 2007, 08:51 UTC
- Message-ID
- <7vtzxcym3t.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <20070223222606.28660.46208.stgit@lathund.dewire.com>
Robin Rosenberg <robin.rosenberg@dewire.com> writes:
Show 15 quoted lines
> -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.