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