| OLD | NEW |
| 1 /* native_client/src/trusted/validator_ragel/gen/validator_x86_32.c | 1 /* native_client/src/trusted/validator_ragel/gen/validator_x86_32.c |
| 2 * THIS FILE IS AUTO-GENERATED. DO NOT EDIT. | 2 * THIS FILE IS AUTO-GENERATED. DO NOT EDIT. |
| 3 * Compiled for ia32 mode. | 3 * Compiled for ia32 mode. |
| 4 */ | 4 */ |
| 5 | 5 |
| 6 /* | 6 /* |
| 7 * This is the core of ia32-mode validator. Please note that this file | 7 * This is the core of ia32-mode validator. Please note that this file |
| 8 * combines ragel machine description and C language actions. Please read | 8 * combines ragel machine description and C language actions. Please read |
| 9 * validator_internals.html first to understand how the whole thing is built: | 9 * validator_internals.html first to understand how the whole thing is built: |
| 10 * it explains how the byte sequences are constructed, what constructs like | 10 * it explains how the byte sequences are constructed, what constructs like |
| 11 * "@{}" or "REX_WRX?" mean, etc. | 11 * "@{}" or "REX_WRX?" mean, etc. |
| 12 */ | 12 */ |
| 13 | 13 |
| 14 #include <assert.h> | 14 #include <assert.h> |
| 15 #include <errno.h> | 15 #include <errno.h> |
| 16 #include <stddef.h> | 16 #include <stddef.h> |
| 17 #include <stdio.h> | 17 #include <stdio.h> |
| 18 #include <stdlib.h> | 18 #include <stdlib.h> |
| 19 #include <string.h> | 19 #include <string.h> |
| 20 | 20 |
| 21 #include "native_client/src/trusted/validator_ragel/bitmap.h" | 21 #include "native_client/src/trusted/validator_ragel/bitmap.h" |
| 22 #include "native_client/src/trusted/validator_ragel/unreviewed/validator_interna
l.h" | 22 #include "native_client/src/trusted/validator_ragel/validator_internal.h" |
| 23 | 23 |
| 24 /* Ignore this information: it's not used by security model in IA32 mode. */ | 24 /* Ignore this information: it's not used by security model in IA32 mode. */ |
| 25 #undef GET_VEX_PREFIX3 | 25 #undef GET_VEX_PREFIX3 |
| 26 #define GET_VEX_PREFIX3 0 | 26 #define GET_VEX_PREFIX3 0 |
| 27 #undef SET_VEX_PREFIX3 | 27 #undef SET_VEX_PREFIX3 |
| 28 #define SET_VEX_PREFIX3(P) | 28 #define SET_VEX_PREFIX3(P) |
| 29 | 29 |
| 30 | 30 |
| 31 | 31 |
| 32 | 32 |
| 33 /* |
| 34 * The "write data" statement causes Ragel to emit the constant static data |
| 35 * needed by the ragel machine. |
| 36 */ |
| 33 | 37 |
| 34 static const int x86_32_validator_start = 234; | 38 static const int x86_32_validator_start = 234; |
| 35 static const int x86_32_validator_first_final = 234; | 39 static const int x86_32_validator_first_final = 234; |
| 36 static const int x86_32_validator_error = 0; | 40 static const int x86_32_validator_error = 0; |
| 37 | 41 |
| 38 static const int x86_32_validator_en_main = 234; | 42 static const int x86_32_validator_en_main = 234; |
| 39 | 43 |
| 40 | 44 |
| 41 | 45 |
| 42 | |
| 43 Bool ValidateChunkIA32(const uint8_t *data, size_t size, | 46 Bool ValidateChunkIA32(const uint8_t *data, size_t size, |
| 44 uint32_t options, | 47 uint32_t options, |
| 45 const NaClCPUFeaturesX86 *cpu_features, | 48 const NaClCPUFeaturesX86 *cpu_features, |
| 46 ValidationCallbackFunc user_callback, | 49 ValidationCallbackFunc user_callback, |
| 47 void *callback_data) { | 50 void *callback_data) { |
| 48 bitmap_word valid_targets_small; | 51 bitmap_word valid_targets_small; |
| 49 bitmap_word jump_dests_small; | 52 bitmap_word jump_dests_small; |
| 50 bitmap_word *valid_targets; | 53 bitmap_word *valid_targets; |
| 51 bitmap_word *jump_dests; | 54 bitmap_word *jump_dests; |
| 52 const uint8_t *current_position; | 55 const uint8_t *current_position; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 69 free(jump_dests); | 72 free(jump_dests); |
| 70 free(valid_targets); | 73 free(valid_targets); |
| 71 errno = ENOMEM; | 74 errno = ENOMEM; |
| 72 return FALSE; | 75 return FALSE; |
| 73 } | 76 } |
| 74 } | 77 } |
| 75 | 78 |
| 76 /* | 79 /* |
| 77 * This option is usually used in tests: we will process the whole chunk | 80 * This option is usually used in tests: we will process the whole chunk |
| 78 * in one pass. Usually each bundle is processed separately which means | 81 * in one pass. Usually each bundle is processed separately which means |
| 79 * instructions (and super-instructions) can not cross borders of the bundle. | 82 * instructions (and "superinstructions") can not cross borders of the bundle. |
| 80 */ | 83 */ |
| 81 if (options & PROCESS_CHUNK_AS_A_CONTIGUOUS_STREAM) | 84 if (options & PROCESS_CHUNK_AS_A_CONTIGUOUS_STREAM) |
| 82 end_of_bundle = data + size; | 85 end_of_bundle = data + size; |
| 83 else | 86 else |
| 84 end_of_bundle = data + kBundleSize; | 87 end_of_bundle = data + kBundleSize; |
| 85 | 88 |
| 86 /* | 89 /* |
| 87 * Main loop. Here we process the data array bundle-after-bundle. | 90 * Main loop. Here we process the data array bundle-after-bundle. |
| 88 * Ragel-produced DFA does all the checks with one exception: direct jumps. | 91 * Ragel-produced DFA does all the checks with one exception: direct jumps. |
| 89 * It collects the two arrays: valid_targets and jump_dests which are used | 92 * It collects the two arrays: valid_targets and jump_dests which are used |
| 90 * to test direct jumps later. | 93 * to test direct jumps later. |
| 91 */ | 94 */ |
| 92 for (current_position = data; | 95 for (current_position = data; |
| 93 current_position < data + size; | 96 current_position < data + size; |
| 94 current_position = end_of_bundle, | 97 current_position = end_of_bundle, |
| 95 end_of_bundle = current_position + kBundleSize) { | 98 end_of_bundle = current_position + kBundleSize) { |
| 96 /* Start of the instruction being processed. */ | 99 /* Start of the instruction being processed. */ |
| 97 const uint8_t *instruction_begin = current_position; | 100 const uint8_t *instruction_begin = current_position; |
| 98 /* Only used locally in the end_of_instruction_cleanup action. */ | 101 /* Only used locally in the end_of_instruction_cleanup action. */ |
| 99 const uint8_t *instruction_end; | 102 const uint8_t *instruction_end; |
| 100 uint32_t instruction_info_collected = 0; | 103 uint32_t instruction_info_collected = 0; |
| 101 int current_state; | 104 int current_state; |
| 102 | 105 |
| 106 /* |
| 107 * The "write init" statement causes Ragel to emit initialization code. |
| 108 * This should be executed once before the ragel machine is started. |
| 109 */ |
| 103 | 110 |
| 104 { | 111 { |
| 105 ( current_state) = x86_32_validator_start; | 112 ( current_state) = x86_32_validator_start; |
| 106 } | 113 } |
| 107 | 114 |
| 115 /* |
| 116 * The "write exec" statement causes Ragel to emit the ragel machine's |
| 117 * execution code. |
| 118 */ |
| 108 | 119 |
| 109 { | 120 { |
| 110 if ( ( current_position) == ( end_of_bundle) ) | 121 if ( ( current_position) == ( end_of_bundle) ) |
| 111 goto _test_eof; | 122 goto _test_eof; |
| 112 switch ( ( current_state) ) | 123 switch ( ( current_state) ) |
| 113 { | 124 { |
| 114 tr0: | 125 tr0: |
| 115 { | 126 { |
| 116 /* Mark start of this instruction as a valid target for jump. */ | 127 /* Mark start of this instruction as a valid target for jump. */ |
| 117 MarkValidJumpTarget(instruction_begin - data, valid_targets); | 128 MarkValidJumpTarget(instruction_begin - data, valid_targets); |
| (...skipping 2493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2611 goto tr90; | 2622 goto tr90; |
| 2612 } else if ( (*( current_position)) >= 64u ) | 2623 } else if ( (*( current_position)) >= 64u ) |
| 2613 goto tr91; | 2624 goto tr91; |
| 2614 goto tr35; | 2625 goto tr35; |
| 2615 st36: | 2626 st36: |
| 2616 if ( ++( current_position) == ( end_of_bundle) ) | 2627 if ( ++( current_position) == ( end_of_bundle) ) |
| 2617 goto _test_eof36; | 2628 goto _test_eof36; |
| 2618 case 36: | 2629 case 36: |
| 2619 switch( (*( current_position)) ) { | 2630 switch( (*( current_position)) ) { |
| 2620 case 4u: goto tr95; | 2631 case 4u: goto tr95; |
| 2632 case 5u: goto tr96; |
| 2621 case 12u: goto tr95; | 2633 case 12u: goto tr95; |
| 2634 case 13u: goto tr96; |
| 2622 case 20u: goto tr95; | 2635 case 20u: goto tr95; |
| 2636 case 21u: goto tr96; |
| 2623 case 28u: goto tr95; | 2637 case 28u: goto tr95; |
| 2638 case 29u: goto tr96; |
| 2624 case 36u: goto tr95; | 2639 case 36u: goto tr95; |
| 2640 case 37u: goto tr96; |
| 2625 case 44u: goto tr95; | 2641 case 44u: goto tr95; |
| 2642 case 45u: goto tr96; |
| 2626 case 52u: goto tr95; | 2643 case 52u: goto tr95; |
| 2644 case 53u: goto tr96; |
| 2627 case 60u: goto tr95; | 2645 case 60u: goto tr95; |
| 2646 case 61u: goto tr96; |
| 2628 case 68u: goto tr98; | 2647 case 68u: goto tr98; |
| 2629 case 76u: goto tr98; | 2648 case 76u: goto tr98; |
| 2630 case 84u: goto tr98; | 2649 case 84u: goto tr98; |
| 2631 case 92u: goto tr98; | 2650 case 92u: goto tr98; |
| 2632 case 100u: goto tr98; | 2651 case 100u: goto tr98; |
| 2633 case 108u: goto tr98; | 2652 case 108u: goto tr98; |
| 2634 case 116u: goto tr98; | 2653 case 116u: goto tr98; |
| 2635 case 124u: goto tr98; | 2654 case 124u: goto tr98; |
| 2636 case 132u: goto tr99; | 2655 case 132u: goto tr99; |
| 2637 case 140u: goto tr99; | 2656 case 140u: goto tr99; |
| 2638 case 148u: goto tr99; | 2657 case 148u: goto tr99; |
| 2639 case 156u: goto tr99; | 2658 case 156u: goto tr99; |
| 2640 case 164u: goto tr99; | 2659 case 164u: goto tr99; |
| 2641 case 172u: goto tr99; | 2660 case 172u: goto tr99; |
| 2642 case 180u: goto tr99; | 2661 case 180u: goto tr99; |
| 2643 case 188u: goto tr99; | 2662 case 188u: goto tr99; |
| 2644 } | 2663 } |
| 2645 » if ( (*( current_position)) < 38u ) { | 2664 » if ( (*( current_position)) < 64u ) { |
| 2646 » » if ( (*( current_position)) < 14u ) { | 2665 » » if ( (*( current_position)) <= 63u ) |
| 2647 » » » if ( (*( current_position)) > 3u ) { | |
| 2648 » » » » if ( 6u <= (*( current_position)) && (*( current
_position)) <= 11u ) | |
| 2649 » » » » » goto tr94; | |
| 2650 » » » } else | |
| 2651 » » » » goto tr94; | |
| 2652 » » } else if ( (*( current_position)) > 19u ) { | |
| 2653 » » » if ( (*( current_position)) > 27u ) { | |
| 2654 » » » » if ( 30u <= (*( current_position)) && (*( curren
t_position)) <= 35u ) | |
| 2655 » » » » » goto tr94; | |
| 2656 » » » } else if ( (*( current_position)) >= 22u ) | |
| 2657 » » » » goto tr94; | |
| 2658 » » } else | |
| 2659 goto tr94; | 2666 goto tr94; |
| 2660 » } else if ( (*( current_position)) > 43u ) { | 2667 » } else if ( (*( current_position)) > 127u ) { |
| 2661 » » if ( (*( current_position)) < 62u ) { | 2668 » » if ( 128u <= (*( current_position)) && (*( current_position)) <=
191u ) |
| 2662 » » » if ( (*( current_position)) > 51u ) { | 2669 » » » goto tr96; |
| 2663 » » » » if ( 54u <= (*( current_position)) && (*( curren
t_position)) <= 59u ) | |
| 2664 » » » » » goto tr94; | |
| 2665 » » » } else if ( (*( current_position)) >= 46u ) | |
| 2666 » » » » goto tr94; | |
| 2667 » » } else if ( (*( current_position)) > 63u ) { | |
| 2668 » » » if ( (*( current_position)) > 127u ) { | |
| 2669 » » » » if ( 192u <= (*( current_position)) ) | |
| 2670 » » » » » goto tr16; | |
| 2671 » » » } else if ( (*( current_position)) >= 64u ) | |
| 2672 » » » » goto tr97; | |
| 2673 » » } else | |
| 2674 » » » goto tr94; | |
| 2675 } else | 2670 } else |
| 2676 » » goto tr94; | 2671 » » goto tr97; |
| 2677 » goto tr96; | 2672 » goto tr16; |
| 2678 st37: | 2673 st37: |
| 2679 if ( ++( current_position) == ( end_of_bundle) ) | 2674 if ( ++( current_position) == ( end_of_bundle) ) |
| 2680 goto _test_eof37; | 2675 goto _test_eof37; |
| 2681 case 37: | 2676 case 37: |
| 2682 if ( (*( current_position)) == 15u ) | 2677 if ( (*( current_position)) == 15u ) |
| 2683 goto st38; | 2678 goto st38; |
| 2684 goto tr16; | 2679 goto tr16; |
| 2685 st38: | 2680 st38: |
| 2686 if ( ++( current_position) == ( end_of_bundle) ) | 2681 if ( ++( current_position) == ( end_of_bundle) ) |
| 2687 goto _test_eof38; | 2682 goto _test_eof38; |
| (...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3425 goto tr160; | 3420 goto tr160; |
| 3426 } else if ( (*( current_position)) >= 64u ) | 3421 } else if ( (*( current_position)) >= 64u ) |
| 3427 goto tr161; | 3422 goto tr161; |
| 3428 goto tr146; | 3423 goto tr146; |
| 3429 st64: | 3424 st64: |
| 3430 if ( ++( current_position) == ( end_of_bundle) ) | 3425 if ( ++( current_position) == ( end_of_bundle) ) |
| 3431 goto _test_eof64; | 3426 goto _test_eof64; |
| 3432 case 64: | 3427 case 64: |
| 3433 switch( (*( current_position)) ) { | 3428 switch( (*( current_position)) ) { |
| 3434 case 4u: goto tr159; | 3429 case 4u: goto tr159; |
| 3430 case 5u: goto tr160; |
| 3435 case 12u: goto tr159; | 3431 case 12u: goto tr159; |
| 3432 case 13u: goto tr160; |
| 3436 case 20u: goto tr159; | 3433 case 20u: goto tr159; |
| 3434 case 21u: goto tr160; |
| 3437 case 28u: goto tr159; | 3435 case 28u: goto tr159; |
| 3436 case 29u: goto tr160; |
| 3438 case 36u: goto tr159; | 3437 case 36u: goto tr159; |
| 3438 case 37u: goto tr160; |
| 3439 case 44u: goto tr159; | 3439 case 44u: goto tr159; |
| 3440 case 45u: goto tr160; |
| 3440 case 52u: goto tr159; | 3441 case 52u: goto tr159; |
| 3442 case 53u: goto tr160; |
| 3441 case 60u: goto tr159; | 3443 case 60u: goto tr159; |
| 3444 case 61u: goto tr160; |
| 3442 case 68u: goto tr162; | 3445 case 68u: goto tr162; |
| 3443 case 76u: goto tr162; | 3446 case 76u: goto tr162; |
| 3444 case 84u: goto tr162; | 3447 case 84u: goto tr162; |
| 3445 case 92u: goto tr162; | 3448 case 92u: goto tr162; |
| 3446 case 100u: goto tr162; | 3449 case 100u: goto tr162; |
| 3447 case 108u: goto tr162; | 3450 case 108u: goto tr162; |
| 3448 case 116u: goto tr162; | 3451 case 116u: goto tr162; |
| 3449 case 124u: goto tr162; | 3452 case 124u: goto tr162; |
| 3450 case 132u: goto tr163; | 3453 case 132u: goto tr163; |
| 3451 case 140u: goto tr163; | 3454 case 140u: goto tr163; |
| 3452 case 148u: goto tr163; | 3455 case 148u: goto tr163; |
| 3453 case 156u: goto tr163; | 3456 case 156u: goto tr163; |
| 3454 case 164u: goto tr163; | 3457 case 164u: goto tr163; |
| 3455 case 172u: goto tr163; | 3458 case 172u: goto tr163; |
| 3456 case 180u: goto tr163; | 3459 case 180u: goto tr163; |
| 3457 case 188u: goto tr163; | 3460 case 188u: goto tr163; |
| 3458 } | 3461 } |
| 3459 » if ( (*( current_position)) < 38u ) { | 3462 » if ( (*( current_position)) < 64u ) { |
| 3460 » » if ( (*( current_position)) < 14u ) { | 3463 » » if ( (*( current_position)) <= 63u ) |
| 3461 » » » if ( (*( current_position)) > 3u ) { | |
| 3462 » » » » if ( 6u <= (*( current_position)) && (*( current
_position)) <= 11u ) | |
| 3463 » » » » » goto tr146; | |
| 3464 » » » } else | |
| 3465 » » » » goto tr146; | |
| 3466 » » } else if ( (*( current_position)) > 19u ) { | |
| 3467 » » » if ( (*( current_position)) > 27u ) { | |
| 3468 » » » » if ( 30u <= (*( current_position)) && (*( curren
t_position)) <= 35u ) | |
| 3469 » » » » » goto tr146; | |
| 3470 » » » } else if ( (*( current_position)) >= 22u ) | |
| 3471 » » » » goto tr146; | |
| 3472 » » } else | |
| 3473 goto tr146; | 3464 goto tr146; |
| 3474 » } else if ( (*( current_position)) > 43u ) { | 3465 » } else if ( (*( current_position)) > 127u ) { |
| 3475 » » if ( (*( current_position)) < 62u ) { | 3466 » » if ( 128u <= (*( current_position)) && (*( current_position)) <=
191u ) |
| 3476 » » » if ( (*( current_position)) > 51u ) { | 3467 » » » goto tr160; |
| 3477 » » » » if ( 54u <= (*( current_position)) && (*( curren
t_position)) <= 59u ) | |
| 3478 » » » » » goto tr146; | |
| 3479 » » » } else if ( (*( current_position)) >= 46u ) | |
| 3480 » » » » goto tr146; | |
| 3481 » » } else if ( (*( current_position)) > 63u ) { | |
| 3482 » » » if ( (*( current_position)) > 127u ) { | |
| 3483 » » » » if ( 192u <= (*( current_position)) ) | |
| 3484 » » » » » goto tr16; | |
| 3485 » » » } else if ( (*( current_position)) >= 64u ) | |
| 3486 » » » » goto tr161; | |
| 3487 » » } else | |
| 3488 » » » goto tr146; | |
| 3489 } else | 3468 } else |
| 3490 » » goto tr146; | 3469 » » goto tr161; |
| 3491 » goto tr160; | 3470 » goto tr16; |
| 3492 st65: | 3471 st65: |
| 3493 if ( ++( current_position) == ( end_of_bundle) ) | 3472 if ( ++( current_position) == ( end_of_bundle) ) |
| 3494 goto _test_eof65; | 3473 goto _test_eof65; |
| 3495 case 65: | 3474 case 65: |
| 3496 if ( 192u <= (*( current_position)) ) | 3475 if ( 192u <= (*( current_position)) ) |
| 3497 goto tr164; | 3476 goto tr164; |
| 3498 goto tr16; | 3477 goto tr16; |
| 3499 st66: | 3478 st66: |
| 3500 if ( ++( current_position) == ( end_of_bundle) ) | 3479 if ( ++( current_position) == ( end_of_bundle) ) |
| 3501 goto _test_eof66; | 3480 goto _test_eof66; |
| (...skipping 1007 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4509 if ( ++( current_position) == ( end_of_bundle) ) | 4488 if ( ++( current_position) == ( end_of_bundle) ) |
| 4510 goto _test_eof115; | 4489 goto _test_eof115; |
| 4511 case 115: | 4490 case 115: |
| 4512 goto st109; | 4491 goto st109; |
| 4513 st116: | 4492 st116: |
| 4514 if ( ++( current_position) == ( end_of_bundle) ) | 4493 if ( ++( current_position) == ( end_of_bundle) ) |
| 4515 goto _test_eof116; | 4494 goto _test_eof116; |
| 4516 case 116: | 4495 case 116: |
| 4517 switch( (*( current_position)) ) { | 4496 switch( (*( current_position)) ) { |
| 4518 case 4u: goto st2; | 4497 case 4u: goto st2; |
| 4498 case 5u: goto st3; |
| 4519 case 12u: goto st2; | 4499 case 12u: goto st2; |
| 4500 case 13u: goto st3; |
| 4520 case 20u: goto st2; | 4501 case 20u: goto st2; |
| 4502 case 21u: goto st3; |
| 4521 case 28u: goto st2; | 4503 case 28u: goto st2; |
| 4504 case 29u: goto st3; |
| 4522 case 36u: goto st2; | 4505 case 36u: goto st2; |
| 4506 case 37u: goto st3; |
| 4523 case 44u: goto st2; | 4507 case 44u: goto st2; |
| 4508 case 45u: goto st3; |
| 4524 case 52u: goto st2; | 4509 case 52u: goto st2; |
| 4510 case 53u: goto st3; |
| 4525 case 60u: goto st2; | 4511 case 60u: goto st2; |
| 4512 case 61u: goto st3; |
| 4526 case 68u: goto st8; | 4513 case 68u: goto st8; |
| 4527 case 76u: goto st8; | 4514 case 76u: goto st8; |
| 4528 case 84u: goto st8; | 4515 case 84u: goto st8; |
| 4529 case 92u: goto st8; | 4516 case 92u: goto st8; |
| 4530 case 100u: goto st8; | 4517 case 100u: goto st8; |
| 4531 case 108u: goto st8; | 4518 case 108u: goto st8; |
| 4532 case 116u: goto st8; | 4519 case 116u: goto st8; |
| 4533 case 124u: goto st8; | 4520 case 124u: goto st8; |
| 4534 case 132u: goto st9; | 4521 case 132u: goto st9; |
| 4535 case 140u: goto st9; | 4522 case 140u: goto st9; |
| 4536 case 148u: goto st9; | 4523 case 148u: goto st9; |
| 4537 case 156u: goto st9; | 4524 case 156u: goto st9; |
| 4538 case 164u: goto st9; | 4525 case 164u: goto st9; |
| 4539 case 172u: goto st9; | 4526 case 172u: goto st9; |
| 4540 case 180u: goto st9; | 4527 case 180u: goto st9; |
| 4541 case 188u: goto st9; | 4528 case 188u: goto st9; |
| 4542 } | 4529 } |
| 4543 » if ( (*( current_position)) < 38u ) { | 4530 » if ( (*( current_position)) < 64u ) { |
| 4544 » » if ( (*( current_position)) < 14u ) { | 4531 » » if ( (*( current_position)) <= 63u ) |
| 4545 » » » if ( (*( current_position)) > 3u ) { | |
| 4546 » » » » if ( 6u <= (*( current_position)) && (*( current
_position)) <= 11u ) | |
| 4547 » » » » » goto tr0; | |
| 4548 » » » } else | |
| 4549 » » » » goto tr0; | |
| 4550 » » } else if ( (*( current_position)) > 19u ) { | |
| 4551 » » » if ( (*( current_position)) > 27u ) { | |
| 4552 » » » » if ( 30u <= (*( current_position)) && (*( curren
t_position)) <= 35u ) | |
| 4553 » » » » » goto tr0; | |
| 4554 » » » } else if ( (*( current_position)) >= 22u ) | |
| 4555 » » » » goto tr0; | |
| 4556 » » } else | |
| 4557 goto tr0; | 4532 goto tr0; |
| 4558 » } else if ( (*( current_position)) > 43u ) { | 4533 » } else if ( (*( current_position)) > 127u ) { |
| 4559 » » if ( (*( current_position)) < 62u ) { | 4534 » » if ( 128u <= (*( current_position)) && (*( current_position)) <=
191u ) |
| 4560 » » » if ( (*( current_position)) > 51u ) { | 4535 » » » goto st3; |
| 4561 » » » » if ( 54u <= (*( current_position)) && (*( curren
t_position)) <= 59u ) | |
| 4562 » » » » » goto tr0; | |
| 4563 » » » } else if ( (*( current_position)) >= 46u ) | |
| 4564 » » » » goto tr0; | |
| 4565 » » } else if ( (*( current_position)) > 63u ) { | |
| 4566 » » » if ( (*( current_position)) > 127u ) { | |
| 4567 » » » » if ( 192u <= (*( current_position)) ) | |
| 4568 » » » » » goto tr16; | |
| 4569 » » » } else if ( (*( current_position)) >= 64u ) | |
| 4570 » » » » goto st7; | |
| 4571 » » } else | |
| 4572 » » » goto tr0; | |
| 4573 } else | 4536 } else |
| 4574 » » goto tr0; | 4537 » » goto st7; |
| 4575 » goto st3; | 4538 » goto tr16; |
| 4576 st117: | 4539 st117: |
| 4577 if ( ++( current_position) == ( end_of_bundle) ) | 4540 if ( ++( current_position) == ( end_of_bundle) ) |
| 4578 goto _test_eof117; | 4541 goto _test_eof117; |
| 4579 case 117: | 4542 case 117: |
| 4580 switch( (*( current_position)) ) { | 4543 switch( (*( current_position)) ) { |
| 4581 case 4u: goto st39; | 4544 case 4u: goto st39; |
| 4582 case 5u: goto st40; | 4545 case 5u: goto st40; |
| 4583 case 12u: goto st39; | 4546 case 12u: goto st39; |
| 4584 case 13u: goto st40; | 4547 case 13u: goto st40; |
| 4585 case 20u: goto st39; | 4548 case 20u: goto st39; |
| (...skipping 5078 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9664 */ | 9627 */ |
| 9665 result &= ProcessInvalidJumpTargets(data, size, valid_targets, jump_dests, | 9628 result &= ProcessInvalidJumpTargets(data, size, valid_targets, jump_dests, |
| 9666 user_callback, callback_data); | 9629 user_callback, callback_data); |
| 9667 | 9630 |
| 9668 /* We only use malloc for a large code sequences */ | 9631 /* We only use malloc for a large code sequences */ |
| 9669 if (jump_dests != &jump_dests_small) free(jump_dests); | 9632 if (jump_dests != &jump_dests_small) free(jump_dests); |
| 9670 if (valid_targets != &valid_targets_small) free(valid_targets); | 9633 if (valid_targets != &valid_targets_small) free(valid_targets); |
| 9671 if (!result) errno = EINVAL; | 9634 if (!result) errno = EINVAL; |
| 9672 return result; | 9635 return result; |
| 9673 } | 9636 } |
| OLD | NEW |