libkmod: fix use of strcpy

We were not checking if there was sufficient space in the buffer.
This commit is contained in:
Lucas De Marchi 2016-08-08 11:42:52 -03:00
parent 65a885df5f
commit 53d3a99ccc

View File

@ -844,15 +844,20 @@ int kmod_config_new(struct kmod_ctx *ctx, struct kmod_config **p_config,
config->ctx = ctx;
for (; list != NULL; list = kmod_list_remove(list)) {
char fn[PATH_MAX];
char buf[PATH_MAX];
const char *fn = buf;
struct conf_file *cf = list->data;
int fd;
if (cf->is_single)
strcpy(fn, cf->path);
else
snprintf(fn, sizeof(fn),"%s/%s", cf->path,
cf->name);
if (cf->is_single) {
fn = cf->path;
} else if (snprintf(buf, sizeof(buf), "%s/%s",
cf->path, cf->name) >= (int)sizeof(buf)) {
ERR(ctx, "Error parsing %s/%s: path too long\n",
cf->path, cf->name);
free(cf);
continue;
}
fd = open(fn, O_RDONLY|O_CLOEXEC);
DBG(ctx, "parsing file '%s' fd=%d\n", fn, fd);