Browse Source

tests/ubpf_verifier.rs: use assembler

Rich Lane 8 years ago
parent
commit
2f9d49f69e
1 changed files with 30 additions and 37 deletions
  1. 30 37
      tests/ubpf_verifier.rs

+ 30 - 37
tests/ubpf_verifier.rs

@@ -23,17 +23,17 @@
 
 extern crate rbpf;
 
+use rbpf::assembler::assemble;
 use rbpf::ebpf;
 
 #[test]
 #[should_panic(expected = "[Verifier] Error: division by 0 (insn #1)")]
 fn test_verifier_err_div_by_zero_imm() {
-    let prog = &[
-        0xb4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-        0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-    ];
-    let vm = rbpf::EbpfVmNoData::new(prog);
+    let prog = assemble("
+        mov32 r0, 1
+        div32 r0, 0
+        exit").unwrap();
+    let vm = rbpf::EbpfVmNoData::new(&prog);
     vm.prog_exec();
 }
 
@@ -63,67 +63,60 @@ fn test_verifier_err_incomplete_lddw() { // Note: ubpf has test-err-incomplete-l
 #[test]
 #[should_panic(expected = "[Verifier] Error: infinite loop")]
 fn test_verifier_err_infinite_loop() {
-    let prog = &[
-        0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-        0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-    ];
-    let vm = rbpf::EbpfVmNoData::new(prog);
+    let prog = assemble("
+        ja -1
+        exit").unwrap();
+    let vm = rbpf::EbpfVmNoData::new(&prog);
     vm.prog_exec();
 }
 
 #[test]
 #[should_panic(expected = "[Verifier] Error: invalid destination register (insn #0)")]
 fn test_verifier_err_invalid_reg_dst() {
-    let prog = &[
-        0xb7, 0x0b, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-        0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-    ];
-    let vm = rbpf::EbpfVmNoData::new(prog);
+    let prog = assemble("
+        mov r11, 1
+        exit").unwrap();
+    let vm = rbpf::EbpfVmNoData::new(&prog);
     vm.prog_exec();
 }
 
 #[test]
 #[should_panic(expected = "[Verifier] Error: invalid source register (insn #0)")]
 fn test_verifier_err_invalid_reg_src() {
-    let prog = &[
-        0xbf, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-    ];
-    let vm = rbpf::EbpfVmNoData::new(prog);
+    let prog = assemble("
+        mov r0, r11
+        exit").unwrap();
+    let vm = rbpf::EbpfVmNoData::new(&prog);
     vm.prog_exec();
 }
 
 #[test]
 #[should_panic(expected = "[Verifier] Error: jump to middle of LD_DW at #2 (insn #0)")]
 fn test_verifier_err_jmp_lddw() {
-    let prog = &[
-        0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x18, 0x00, 0x00, 0x00, 0x88, 0x77, 0x66, 0x55,
-        0x00, 0x00, 0x00, 0x00, 0x44, 0x33, 0x22, 0x11,
-        0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-    ];
-    let vm = rbpf::EbpfVmNoData::new(prog);
+    let prog = assemble("
+        ja +1
+        lddw r0, 0x1122334455667788
+        exit").unwrap();
+    let vm = rbpf::EbpfVmNoData::new(&prog);
     vm.prog_exec();
 }
 
 #[test]
 #[should_panic(expected = "[Verifier] Error: jump out of code to #3 (insn #0)")]
 fn test_verifier_err_jmp_out() {
-    let prog = &[
-        0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-    ];
-    let vm = rbpf::EbpfVmNoData::new(prog);
+    let prog = assemble("
+        ja +2
+        exit").unwrap();
+    let vm = rbpf::EbpfVmNoData::new(&prog);
     vm.prog_exec();
 }
 
 #[test]
 #[should_panic(expected = "[Verifier] Error: program does not end with “EXIT” instruction")]
 fn test_verifier_err_no_exit() {
-    let prog = &[
-        0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-    ];
-    let vm = rbpf::EbpfVmNoData::new(prog);
+    let prog = assemble("
+        mov32 r0, 0").unwrap();
+    let vm = rbpf::EbpfVmNoData::new(&prog);
     vm.prog_exec();
 }