| 116 | return interface |
| 117 | |
| 118 | def interface_updated(self): |
| 119 | if self.new_interface == {}: |
| 120 | return True |
| 121 | new_deserializer_found = False |
| 122 | for cmd_id in self.new_interface: |
| 123 | if cmd_id not in self.interface: |
| 124 | new_deserializer_found = True |
| 125 | continue |
| 126 | if len(self.new_interface[cmd_id]) > len(self.interface[cmd_id]): |
| 127 | if int(cmd_id) == 1598311760 and META_TARGET==AARCH64_EMU_28: |
| 128 | continue |
| 129 | new_deserializer_found = True |
| 130 | self.log(f'{cmd_id} discovered new deserializers {self.new_interface[cmd_id]}') |
| 131 | continue |
| 132 | if len(self.new_interface[cmd_id]) < len(self.interface[cmd_id]): |
| 133 | self.log(f'{cmd_id} REGRESSION... old: {self.interface[cmd_id]}, new: {self.new_interface[cmd_id]}') |
| 134 | self.new_interface[cmd_id] = self.interface[cmd_id] |
| 135 | self.interface = self.new_interface |
| 136 | return new_deserializer_found |
| 137 | |
| 138 | def enumerate_cmd_ids(self): |
| 139 | # run fuzzer in cmd id enumeration mode |