mirror of
https://github.com/AuxXxilium/kmod.git
synced 2025-02-22 17:49:36 +07:00
libkmod: fix use of strcpy
We were not checking if there was sufficient space in the buffer.
This commit is contained in:
parent
65a885df5f
commit
53d3a99ccc
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user