()
| 193 | |
| 194 | class Chain950Base extends ChainBase { |
| 195 | constructor() { |
| 196 | super(); |
| 197 | |
| 198 | // for conditional jumps |
| 199 | this._clean_branch_ctx(); |
| 200 | this.flag = new Uint8Array(8); |
| 201 | this.flag_addr = get_view_vector(this.flag); |
| 202 | this.jmp_target = new Uint8Array(0x100); |
| 203 | rw.write64(this.jmp_target, 0x1c, this.get_gadget(jop4)); |
| 204 | rw.write64(this.jmp_target, 0, this.get_gadget(jop5)); |
| 205 | |
| 206 | // for save/restore |
| 207 | this.is_saved = false; |
| 208 | this.is_stale = false; |
| 209 | this.position = 0; |
| 210 | const jmp_buf_size = 0xc8; |
| 211 | this.jmp_buf = new Uint8Array(jmp_buf_size); |
| 212 | this.jmp_buf_p = get_view_vector(this.jmp_buf); |
| 213 | } |
| 214 | |
| 215 | // sequence to pivot back and return |
| 216 | push_end() { |
nothing calls this directly
no test coverage detected