116 files changed, 25845 insertions, 36303 deletions
diff --git a/drivers/common/firmware/firmware_drv.c b/drivers/common/firmware/firmware_drv.c index fa21f0c..85e904e 100644 --- a/drivers/common/firmware/firmware_drv.c +++ b/drivers/common/firmware/firmware_drv.c @@ -122,12 +122,16 @@ int get_data_from_name(const char *name, char *buf) struct fw_mgr_s *mgr = g_mgr; struct fw_info_s *info; char *fw_name = __getname(); + int len; if (fw_name == NULL) return -ENOMEM; - strcat(fw_name, name); - strcat(fw_name, ".bin"); + len = snprintf(fw_name, PATH_MAX, "%s.bin", name); + if (len >= PATH_MAX) { + __putname(fw_name); + return -ENAMETOOLONG; + } mutex_lock(&mutex); @@ -544,6 +548,7 @@ static int fw_replace_dup_data(char *buf) goto out; } + info->data->head.data_size = len; memcpy(data, pinfo->data, len); memcpy(data, info->data, sizeof(*data)); |