[PATCH v13 02/14] perf, tools, jevents: Program to convert JSON file to C style file

Jiri Olsa jolsa at redhat.com
Wed Jun 3 20:30:45 AEST 2015


On Tue, Jun 02, 2015 at 10:12:02AM -0700, Sukadev Bhattiprolu wrote:

SNIP

> +
> +static char *file_name_to_table_name(char *fname)
> +{
> +	unsigned int i, j;
> +	int c;
> +	int n = 1024;		/* use max variable length? */

I think this should be at least PATH_MAX, or you might
actually use asprintf and have all below done within
one line or so

jirka

> +	char *tblname;
> +	char *p;
> +
> +	tblname = malloc(n);
> +	if (!tblname)
> +		return NULL;
> +
> +	p = basename(fname);
> +
> +	memset(tblname, 0, n);
> +
> +	/* Ensure table name starts with an alphabetic char */
> +	strcpy(tblname, "pme_");
> +
> +	n = strlen(fname) + strlen(tblname);
> +	n = min(1024, n);
> +
> +	for (i = 0, j = strlen(tblname); i < strlen(fname); i++, j++) {
> +		c = p[i];
> +		if (isalnum(c) || c == '_')
> +			tblname[j] = c;
> +		else if (c == '-')
> +			tblname[j] = '_';
> +		else if (c == '.') {
> +			tblname[j] = '\0';
> +			break;
> +		} else {
> +			pr_err("%s: Invalid character '%c' in file name %s\n",
> +					prog, c, p);
> +			free(tblname);
> +			return NULL;
> +		}
> +	}
> +
> +	return tblname;
> +}

SNIP


More information about the Linuxppc-dev mailing list