/* Call with cg_mount_table_lock taken */
+/* path value have to have size at least FILENAME_MAX */
static char *cg_build_path_locked(const char *name, char *path,
const char *type)
{
int i;
for (i = 0; cg_mount_table[i].name[0] != '\0'; i++) {
- /*
- * XX: Change to snprintf once you figure what n should be
- */
if (strcmp(cg_mount_table[i].name, type) == 0) {
if (cg_namespace_table[i]) {
- sprintf(path, "%s/%s/",
+ snprintf(path, FILENAME_MAX, "%s/%s/",
cg_mount_table[i].mount.path,
cg_namespace_table[i]);
+ path[FILENAME_MAX-1] = '\0';
} else {
- sprintf(path, "%s/",
+ snprintf(path, FILENAME_MAX, "%s/",
cg_mount_table[i].mount.path);
+ path[FILENAME_MAX-1] = '\0';
}
if (name) {
/* FIXME: missing OOM check here! */
- sprintf(path, "%s%s/", tmp, name);
+ snprintf(path, FILENAME_MAX, "%s%s/",
+ tmp, name);
+ path[FILENAME_MAX-1] = '\0';
free(tmp);
}
return path;