parameters: (self, f, segment_data)
return_statement: return segment_data
docstring: If SHA256 digest of the ELF file needs to be inserted into this segment, do so. Returns segment data.
docstring_summary: If SHA256 digest of the ELF file needs to be inserted into this segment, do so. Returns segment data.
docstring_tokens: If SHA256 digest of the ELF file needs to be inserted into this segment do so . Returns segment data .
function: def maybe_patch_segment_data(self, f, segment_data):
          """If SHA256 digest of the ELF file needs to be inserted into this segment, do so. Returns segment data."""
          segment_len = len(segment_data)
          file_pos = f.tell()  # file_pos is position in the .bin file
          if self.elf_sha256_offset >= file_pos and self.elf_sha256_offset < file_pos + segment_len:
              # SHA256 digest needs to be patched into this binary segment,
              # calculate offset of the digest inside the binary segment.
              patch_offset = self.elf_sha256_offset - file_pos
              # Sanity checks
              if patch_offset < self.SEG_HEADER_LEN or patch_offset + self.SHA256_DIGEST_LEN > segment_len:
                  raise FatalError('Cannot place SHA256 digest on segment boundary' +
                                   '(elf_sha256_offset=%d, file_pos=%d, segment_size=%d)' %
                                   (self.elf_sha256_offset, file_pos, segment_len))
              if segment_data[patch_offset:patch_offset + self.SHA256_DIGEST_LEN] != b'\x00' * self.SHA256_DIGEST_LEN:
                  raise FatalError('Contents of segment at SHA256 digest offset 0x%x are not all zero. Refusing to overwrite.' %
                                   self.elf_sha256_offset)
              assert(len(self.elf_sha256) == self.SHA256_DIGEST_LEN)
              # offset relative to the data part
              patch_offset -= self.SEG_HEADER_LEN
              segment_data = segment_data[0:patch_offset] + self.elf_sha256 + \
                  segment_data[patch_offset + self.SHA256_DIGEST_LEN:]
          return segment_data
function_tokens: def maybe_patch_segment_data ( self , f , segment_data ) : segment_len = len ( segment_data ) file_pos = f . tell ( ) # file_pos is position in the .bin file if self . elf_sha256_offset >= file_pos and self . elf_sha256_offset < file_pos + segment_len : # SHA256 digest needs to be patched into this binary segment, # calculate offset of the digest inside the binary segment. patch_offset = self . elf_sha256_offset - file_pos # Sanity checks if patch_offset < self . SEG_HEADER_LEN or patch_offset + self . SHA256_DIGEST_LEN > segment_len : raise FatalError ( 'Cannot place SHA256 digest on segment boundary' + '(elf_sha256_offset=%d, file_pos=%d, segment_size=%d)' % ( self . elf_sha256_offset , file_pos , segment_len ) ) if segment_data [ patch_offset : patch_offset + self . SHA256_DIGEST_LEN ] != b'\x00' * self . SHA256_DIGEST_LEN : raise FatalError ( 'Contents of segment at SHA256 digest offset 0x%x are not all zero. Refusing to overwrite.' % self . elf_sha256_offset ) assert ( len ( self . elf_sha256 ) == self . SHA256_DIGEST_LEN ) # offset relative to the data part patch_offset -= self . SEG_HEADER_LEN segment_data = segment_data [ 0 : patch_offset ] + self . elf_sha256 + segment_data [ patch_offset + self . SHA256_DIGEST_LEN : ] return segment_data