MCPcopy Create free account
hub / github.com/cloud-hypervisor/cloud-hypervisor / import_parameter

Function import_parameter

vmm/src/igvm/igvm_loader.rs:208–234  ·  view source on GitHub ↗

Import a parameter to the given parameter area.

(
    parameter_areas: &mut HashMap<u32, ParameterAreaState>,
    info: &IGVM_VHS_PARAMETER,
    parameter: &[u8],
)

Source from the content-addressed store, hash-verified

206
207// Import a parameter to the given parameter area.
208fn import_parameter(
209 parameter_areas: &mut HashMap<u32, ParameterAreaState>,
210 info: &IGVM_VHS_PARAMETER,
211 parameter: &[u8],
212) -> Result<(), Error> {
213 let (parameter_area, max_size) = match parameter_areas
214 .get_mut(&info.parameter_area_index)
215 .expect("parameter area should be present")
216 {
217 ParameterAreaState::Allocated { data, max_size } => (data, max_size),
218 ParameterAreaState::Inserted => panic!("igvmfile is not valid"),
219 };
220 let offset = info.byte_offset as usize;
221 let end_of_parameter = offset + parameter.len();
222
223 if end_of_parameter > *max_size as usize {
224 // TODO: tracing for which parameter was too big?
225 return Err(Error::ParameterTooLarge);
226 }
227
228 if parameter_area.len() < end_of_parameter {
229 parameter_area.resize(end_of_parameter, 0);
230 }
231
232 parameter_area[offset..end_of_parameter].copy_from_slice(parameter);
233 Ok(())
234}
235
236///
237/// Extract guest policy from the IGVM initialization headers.

Callers 1

load_igvmFunction · 0.85

Calls 3

get_mutMethod · 0.45
lenMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected