函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:security\integrity\ima\ima_template.c Create Date:2022-07-27 22:05:21
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:Restore the serialized binary measurement list without extending PCRs.

函数原型:int ima_restore_measurement_list(loff_t size, void *buf)

返回类型:int

参数:

类型参数名称
loff_tsize
void *buf
352  khdr等于buf
353  struct ima_field_data hdr[HDR__LAST] = {[HDR_PCR] = {len = sizeof(u32)}, [HDR_DIGEST] = {len = Max TPM v1.2 PCR size }, }
358  bufp等于bufkhdr的长度
362  DECLARE_BITMAP(hdr_mask, HDR__LAST)
363  count等于0
364  ret等于0
366  如果非bufsize小于khdr的长度则返回:0
369  如果ima_canonical_fmt
370  version等于le16_to_cpu(version)
371  count等于le64_to_cpu(count)
372  buffer_size等于le64_to_cpu(buffer_size)
375  如果version不等于1则
376  打印错误信息("attempting to restore a incompatible measurement list")
377  返回:负EINVAL
380  如果count大于ULONG_MAX减1则
381  打印错误信息("attempting to restore too many measurements")
382  返回:负EINVAL
385  bitmap_zero(hdr_mask, HDR__LAST)
386  bitmap_set(hdr_mask, HDR_PCR, 1)
387  bitmap_set(hdr_mask, HDR_DIGEST, 1)
394  bufendp等于bufbuffer_size
395 bufp小于bufendpcount自加小于count循环
396  enforce_mask等于ENFORCE_FIELDS
398  enforce_mask或等于如果count恒等于countENFORCE_BUFEND否则0
399  ret等于ima_parse_buf(bufp, bufendp, & bufp, HDR__LAST, hdr, NULL, hdr_mask, enforce_mask, "entry header")
401  如果ret小于0则退出
405  打印错误信息("attempting to restore a template name that is too long\n")
406  ret等于负EINVAL
407  退出
411  memcpy(template_name, data, len)
413  template_name[len]等于0
415  如果字符串比较恒等于0则
416  打印错误信息("attempting to restore an unsupported template \"%s\" failed\n", template_name)
418  ret等于负EINVAL
419  退出
422  template_desc等于lookup_template_desc(template_name)
423  如果非template_desc
425  如果非template_desc退出
433  ret等于template_desc_init_fields(fmt, & (fields), & (num_fields))
436  如果ret小于0则
437  打印错误信息("attempting to restore the template fmt \"%s\" failed\n", fmt)
439  ret等于负EINVAL
440  退出
443  ret等于ima_restore_template_data(template_desc, data, len, & entry)
447  如果ret小于0则退出
450  memcpy( sha1 or md5 measurement hash , data, len)
452  pcr等于如果非ima_canonical_fmt则*data否则le32_to_cpu( * (data))
454  ret等于ima_restore_measurement_entry(entry)
455  如果ret小于0则退出
459  返回:ret
调用者
名称描述
ima_load_kexec_bufferRestore the measurement list from the previous kernel.