mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-26 06:30:42 +09:00
tools: image-host: clean function fit_config_get_hash_list
This commit creates a function fit_config_add_hash that will be used in the next commit to support several 'sub-images'. Signed-off-by: Philippe Reynes <philippe.reynes@softathome.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
184aa65041
commit
5a4116f1a2
@ -700,13 +700,84 @@ static const char *fit_config_get_image_list(void *fit, int noffset,
|
||||
return default_list;
|
||||
}
|
||||
|
||||
static int fit_config_add_hash(void *fit, const char *conf_name, const char *sig_name,
|
||||
struct strlist *node_inc, const char *iname, int image_noffset)
|
||||
{
|
||||
char name[200], path[200];
|
||||
int noffset;
|
||||
int hash_count;
|
||||
int ret;
|
||||
|
||||
ret = fdt_get_path(fit, image_noffset, path, sizeof(path));
|
||||
if (ret < 0)
|
||||
goto err_path;
|
||||
if (strlist_add(node_inc, path))
|
||||
goto err_mem;
|
||||
|
||||
snprintf(name, sizeof(name), "%s/%s", FIT_CONFS_PATH,
|
||||
conf_name);
|
||||
|
||||
/* Add all this image's hashes */
|
||||
hash_count = 0;
|
||||
for (noffset = fdt_first_subnode(fit, image_noffset);
|
||||
noffset >= 0;
|
||||
noffset = fdt_next_subnode(fit, noffset)) {
|
||||
const char *name = fit_get_name(fit, noffset, NULL);
|
||||
|
||||
if (strncmp(name, FIT_HASH_NODENAME,
|
||||
strlen(FIT_HASH_NODENAME)))
|
||||
continue;
|
||||
ret = fdt_get_path(fit, noffset, path, sizeof(path));
|
||||
if (ret < 0)
|
||||
goto err_path;
|
||||
if (strlist_add(node_inc, path))
|
||||
goto err_mem;
|
||||
hash_count++;
|
||||
}
|
||||
|
||||
if (!hash_count) {
|
||||
printf("Failed to find any hash nodes in configuration '%s/%s' image '%s' - without these it is not possible to verify this image\n",
|
||||
conf_name, sig_name, iname);
|
||||
return -ENOMSG;
|
||||
}
|
||||
|
||||
/* Add this image's cipher node if present */
|
||||
noffset = fdt_subnode_offset(fit, image_noffset,
|
||||
FIT_CIPHER_NODENAME);
|
||||
if (noffset != -FDT_ERR_NOTFOUND) {
|
||||
if (noffset < 0) {
|
||||
printf("Failed to get cipher node in configuration '%s/%s' image '%s': %s\n",
|
||||
conf_name, sig_name, iname,
|
||||
fdt_strerror(noffset));
|
||||
return -EIO;
|
||||
}
|
||||
ret = fdt_get_path(fit, noffset, path, sizeof(path));
|
||||
if (ret < 0)
|
||||
goto err_path;
|
||||
if (strlist_add(node_inc, path))
|
||||
goto err_mem;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_mem:
|
||||
printf("Out of memory processing configuration '%s/%s'\n", conf_name,
|
||||
sig_name);
|
||||
return -ENOMEM;
|
||||
|
||||
err_path:
|
||||
printf("Failed to get path for image '%s' in configuration '%s/%s': %s\n",
|
||||
iname, conf_name, sig_name, fdt_strerror(ret));
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
static int fit_config_get_hash_list(void *fit, int conf_noffset,
|
||||
int sig_offset, struct strlist *node_inc)
|
||||
{
|
||||
int allow_missing;
|
||||
const char *prop, *iname, *end;
|
||||
const char *conf_name, *sig_name;
|
||||
char name[200], path[200];
|
||||
char name[200];
|
||||
int image_count;
|
||||
int ret, len;
|
||||
|
||||
@ -733,9 +804,7 @@ static int fit_config_get_hash_list(void *fit, int conf_noffset,
|
||||
end = prop + len;
|
||||
image_count = 0;
|
||||
for (iname = prop; iname < end; iname += strlen(iname) + 1) {
|
||||
int noffset;
|
||||
int image_noffset;
|
||||
int hash_count;
|
||||
|
||||
image_noffset = fit_conf_get_prop_node(fit, conf_noffset,
|
||||
iname);
|
||||
@ -748,55 +817,11 @@ static int fit_config_get_hash_list(void *fit, int conf_noffset,
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
ret = fdt_get_path(fit, image_noffset, path, sizeof(path));
|
||||
ret = fit_config_add_hash(fit, conf_name,
|
||||
sig_name, node_inc,
|
||||
iname, image_noffset);
|
||||
if (ret < 0)
|
||||
goto err_path;
|
||||
if (strlist_add(node_inc, path))
|
||||
goto err_mem;
|
||||
|
||||
snprintf(name, sizeof(name), "%s/%s", FIT_CONFS_PATH,
|
||||
conf_name);
|
||||
|
||||
/* Add all this image's hashes */
|
||||
hash_count = 0;
|
||||
for (noffset = fdt_first_subnode(fit, image_noffset);
|
||||
noffset >= 0;
|
||||
noffset = fdt_next_subnode(fit, noffset)) {
|
||||
const char *name = fit_get_name(fit, noffset, NULL);
|
||||
|
||||
if (strncmp(name, FIT_HASH_NODENAME,
|
||||
strlen(FIT_HASH_NODENAME)))
|
||||
continue;
|
||||
ret = fdt_get_path(fit, noffset, path, sizeof(path));
|
||||
if (ret < 0)
|
||||
goto err_path;
|
||||
if (strlist_add(node_inc, path))
|
||||
goto err_mem;
|
||||
hash_count++;
|
||||
}
|
||||
|
||||
if (!hash_count) {
|
||||
printf("Failed to find any hash nodes in configuration '%s/%s' image '%s' - without these it is not possible to verify this image\n",
|
||||
conf_name, sig_name, iname);
|
||||
return -ENOMSG;
|
||||
}
|
||||
|
||||
/* Add this image's cipher node if present */
|
||||
noffset = fdt_subnode_offset(fit, image_noffset,
|
||||
FIT_CIPHER_NODENAME);
|
||||
if (noffset != -FDT_ERR_NOTFOUND) {
|
||||
if (noffset < 0) {
|
||||
printf("Failed to get cipher node in configuration '%s/%s' image '%s': %s\n",
|
||||
conf_name, sig_name, iname,
|
||||
fdt_strerror(noffset));
|
||||
return -EIO;
|
||||
}
|
||||
ret = fdt_get_path(fit, noffset, path, sizeof(path));
|
||||
if (ret < 0)
|
||||
goto err_path;
|
||||
if (strlist_add(node_inc, path))
|
||||
goto err_mem;
|
||||
}
|
||||
return ret;
|
||||
|
||||
image_count++;
|
||||
}
|
||||
@ -813,11 +838,6 @@ err_mem:
|
||||
printf("Out of memory processing configuration '%s/%s'\n", conf_name,
|
||||
sig_name);
|
||||
return -ENOMEM;
|
||||
|
||||
err_path:
|
||||
printf("Failed to get path for image '%s' in configuration '%s/%s': %s\n",
|
||||
iname, conf_name, sig_name, fdt_strerror(ret));
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
static int fit_config_get_data(void *fit, int conf_noffset, int noffset,
|
||||
|
Loading…
Reference in New Issue
Block a user