MCPcopy Create free account
hub / github.com/coreboot/coreboot / cbfs_add_integer_component

Function cbfs_add_integer_component

util/cbfstool/cbfstool.c:672–728  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

670 struct cbfs_file *header);
671
672static int cbfs_add_integer_component(const char *name,
673 uint64_t u64val,
674 uint32_t offset,
675 uint32_t headeroffset) {
676 struct cbfs_image image;
677 struct cbfs_file *header = NULL;
678 struct buffer buffer;
679 int i, ret = 1;
680
681 if (!name) {
682 ERROR("You need to specify -n/--name.\n");
683 return 1;
684 }
685
686 if (buffer_create(&buffer, 8, name) != 0)
687 return 1;
688
689 for (i = 0; i < 8; i++)
690 buffer.data[i] = (u64val >> i*8) & 0xff;
691
692 if (cbfs_image_from_buffer(&image, param.image_region, headeroffset)) {
693 ERROR("Selected image region is not a CBFS.\n");
694 goto done;
695 }
696
697 if (cbfs_get_entry(&image, name)) {
698 if (cbfs_remove_entry(&image, name) != 0) {
699 ERROR("Removing file '%s' failed.\n", name);
700 goto done;
701 }
702 }
703
704 header = cbfs_create_file_header(CBFS_TYPE_RAW,
705 buffer.size, name);
706 if (!header)
707 goto done;
708
709 enum vb2_hash_algorithm algo = get_mh_cache()->cbfs_hash.algo;
710 if (algo != VB2_HASH_INVALID)
711 if (cbfs_add_file_hash(header, &buffer, algo)) {
712 ERROR("couldn't add hash for '%s'\n", name);
713 goto done;
714 }
715
716 if (cbfs_add_entry(&image, &buffer, offset, header, 0) != 0) {
717 ERROR("Failed to add %llu into ROM image as '%s'.\n",
718 (long long unsigned)u64val, name);
719 goto done;
720 }
721
722 ret = maybe_update_metadata_hash(&image);
723
724done:
725 free(header);
726 buffer_delete(&buffer);
727 return ret;
728}
729

Callers 1

cbfs_add_integerFunction · 0.85

Calls 11

buffer_createFunction · 0.85
cbfs_image_from_bufferFunction · 0.85
cbfs_get_entryFunction · 0.85
cbfs_remove_entryFunction · 0.85
cbfs_create_file_headerFunction · 0.85
get_mh_cacheFunction · 0.85
cbfs_add_file_hashFunction · 0.85
cbfs_add_entryFunction · 0.85
buffer_deleteFunction · 0.85
freeFunction · 0.50

Tested by

no test coverage detected