PHP  
 PHP: Test and Code Coverage Analysis
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

LCOV - code coverage report
Current view: top level - lcov_data/ext/phar - phar_path_check.c (source / functions) Hit Total Coverage
Test: PHP Code Coverage Lines: 75 138 54.3 %
Date: 2014-11-22 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* Generated by re2c 0.13.5 */
       2             : #line 1 "ext/phar/phar_path_check.re"
       3             : /*
       4             :   +----------------------------------------------------------------------+
       5             :   | phar php single-file executable PHP extension                        |
       6             :   +----------------------------------------------------------------------+
       7             :   | Copyright (c) 2007-2014 The PHP Group                                |
       8             :   +----------------------------------------------------------------------+
       9             :   | This source file is subject to version 3.01 of the PHP license,      |
      10             :   | that is bundled with this package in the file LICENSE, and is        |
      11             :   | available through the world-wide-web at the following url:           |
      12             :   | http://www.php.net/license/3_01.txt.                                 |
      13             :   | If you did not receive a copy of the PHP license and are unable to   |
      14             :   | obtain it through the world-wide-web, please send a note to          |
      15             :   | license@php.net so we can mail you a copy immediately.               |
      16             :   +----------------------------------------------------------------------+
      17             :   | Authors: Marcus Boerger <helly@php.net>                              |
      18             :   +----------------------------------------------------------------------+
      19             : */
      20             : 
      21             : /* $Id$ */
      22             : 
      23             : #include "phar_internal.h"
      24             : 
      25             : phar_path_check_result phar_path_check(char **s, int *len, const char **error)
      26             : {
      27             :         const unsigned char *p = (const unsigned char*)*s;
      28             :         const unsigned char *m;
      29             : 
      30             :         if (*len == 1 && *p == '.') {
      31             :                 *error = "current directory reference";
      32             :                 return pcr_err_curr_dir;
      33             :         } else if (*len == 2 && p[0] == '.' && p[1] == '.') {
      34             :                 *error = "upper directory reference";
      35             :                 return pcr_err_up_dir;
      36             :         }
      37             : 
      38             : #define YYCTYPE         unsigned char
      39             : #define YYCURSOR        p
      40             : #define YYLIMIT         p+*len
      41             : #define YYMARKER        m
      42             : #define YYFILL(n)
      43             : 
      44             : loop:
      45             : 
      46             : #line 47 "ext/phar/phar_path_check.c"
      47             : {
      48             :         YYCTYPE yych;
      49      261341 :         unsigned int yyaccept = 0;
      50             : 
      51      261341 :         if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
      52      261341 :         yych = *YYCURSOR;
      53      261341 :         if (yych <= '[') {
      54       92674 :                 if (yych <= ')') {
      55       12617 :                         if (yych <= '\t') {
      56       12614 :                                 if (yych <= 0x00) goto yy21;
      57           0 :                                 goto yy23;
      58             :                         } else {
      59           3 :                                 if (yych <= '\n') goto yy2;
      60           3 :                                 if (yych <= 0x19) goto yy23;
      61           3 :                                 goto yy11;
      62             :                         }
      63             :                 } else {
      64       80057 :                         if (yych <= '/') {
      65       28100 :                                 if (yych <= '*') goto yy7;
      66       28100 :                                 if (yych <= '.') goto yy11;
      67       26434 :                                 goto yy3;
      68             :                         } else {
      69       51957 :                                 if (yych == '?') goto yy9;
      70       51953 :                                 goto yy11;
      71             :                         }
      72             :                 }
      73             :         } else {
      74      168667 :                 if (yych <= 0xEC) {
      75      168661 :                         if (yych <= 0xC1) {
      76      168655 :                                 if (yych <= '\\') goto yy5;
      77      168655 :                                 if (yych <= 0x7F) goto yy11;
      78           4 :                                 goto yy23;
      79             :                         } else {
      80           6 :                                 if (yych <= 0xDF) goto yy12;
      81           6 :                                 if (yych <= 0xE0) goto yy14;
      82           6 :                                 goto yy15;
      83             :                         }
      84             :                 } else {
      85           6 :                         if (yych <= 0xF0) {
      86           4 :                                 if (yych <= 0xED) goto yy16;
      87           4 :                                 if (yych <= 0xEF) goto yy17;
      88           4 :                                 goto yy18;
      89             :                         } else {
      90           2 :                                 if (yych <= 0xF3) goto yy19;
      91           2 :                                 if (yych <= 0xF4) goto yy20;
      92           2 :                                 goto yy23;
      93             :                         }
      94             :                 }
      95             :         }
      96             : yy2:
      97           4 :         YYCURSOR = YYMARKER;
      98           4 :         if (yyaccept <= 0) {
      99           2 :                 goto yy4;
     100             :         } else {
     101           2 :                 goto yy13;
     102             :         }
     103             : yy3:
     104       26434 :         yyaccept = 0;
     105       26434 :         yych = *(YYMARKER = ++YYCURSOR);
     106       26434 :         if (yych <= '-') goto yy4;
     107       26427 :         if (yych <= '.') goto yy35;
     108       26420 :         if (yych <= '/') goto yy36;
     109             : yy4:
     110             : #line 88 "ext/phar/phar_path_check.re"
     111             :         {
     112             :                         goto loop;
     113             :                 }
     114             : #line 115 "ext/phar/phar_path_check.c"
     115             : yy5:
     116           0 :         ++YYCURSOR;
     117             : #line 72 "ext/phar/phar_path_check.re"
     118             :         {
     119             :                         *error = "back-slash";
     120             :                         return pcr_err_back_slash;
     121             :                 }
     122             : #line 123 "ext/phar/phar_path_check.c"
     123             : yy7:
     124           0 :         ++YYCURSOR;
     125             : #line 76 "ext/phar/phar_path_check.re"
     126             :         {
     127             :                         *error = "star";
     128             :                         return pcr_err_star;
     129             :                 }
     130             : #line 131 "ext/phar/phar_path_check.c"
     131             : yy9:
     132           4 :         ++YYCURSOR;
     133             : #line 80 "ext/phar/phar_path_check.re"
     134             :         {
     135             :                         if (**s == '/') {
     136             :                                 (*s)++;
     137             :                         }
     138             :                         *len = (p - (const unsigned char*)*s) -1;
     139             :                         *error = NULL;
     140             :                         return pcr_use_query;
     141             :                 }
     142             : #line 143 "ext/phar/phar_path_check.c"
     143             : yy11:
     144      222273 :         yych = *++YYCURSOR;
     145      222273 :         goto yy4;
     146             : yy12:
     147           0 :         ++YYCURSOR;
     148           0 :         if ((yych = *YYCURSOR) <= 0x7F) goto yy13;
     149           0 :         if (yych <= 0xBF) goto yy26;
     150             : yy13:
     151             : #line 104 "ext/phar/phar_path_check.re"
     152             :         {
     153             :                         *error ="illegal character";
     154             :                         return pcr_err_illegal_char;
     155             :                 }
     156             : #line 157 "ext/phar/phar_path_check.c"
     157             : yy14:
     158           0 :         yyaccept = 1;
     159           0 :         yych = *(YYMARKER = ++YYCURSOR);
     160           0 :         if (yych <= 0x9F) goto yy13;
     161           0 :         if (yych <= 0xBF) goto yy34;
     162           0 :         goto yy13;
     163             : yy15:
     164           6 :         yyaccept = 1;
     165           6 :         yych = *(YYMARKER = ++YYCURSOR);
     166           6 :         if (yych <= 0x7F) goto yy13;
     167           6 :         if (yych <= 0xBF) goto yy33;
     168           0 :         goto yy13;
     169             : yy16:
     170           0 :         yyaccept = 1;
     171           0 :         yych = *(YYMARKER = ++YYCURSOR);
     172           0 :         if (yych <= 0x7F) goto yy13;
     173           0 :         if (yych <= 0x9F) goto yy32;
     174           0 :         goto yy13;
     175             : yy17:
     176           0 :         yyaccept = 1;
     177           0 :         yych = *(YYMARKER = ++YYCURSOR);
     178           0 :         if (yych <= 0x7F) goto yy13;
     179           0 :         if (yych <= 0xBF) goto yy31;
     180           0 :         goto yy13;
     181             : yy18:
     182           4 :         yyaccept = 1;
     183           4 :         yych = *(YYMARKER = ++YYCURSOR);
     184           4 :         if (yych <= 0x8F) goto yy13;
     185           2 :         if (yych <= 0xBF) goto yy29;
     186           0 :         goto yy13;
     187             : yy19:
     188           0 :         yyaccept = 1;
     189           0 :         yych = *(YYMARKER = ++YYCURSOR);
     190           0 :         if (yych <= 0x7F) goto yy13;
     191           0 :         if (yych <= 0xBF) goto yy27;
     192           0 :         goto yy13;
     193             : yy20:
     194           0 :         yyaccept = 1;
     195           0 :         yych = *(YYMARKER = ++YYCURSOR);
     196           0 :         if (yych <= 0x7F) goto yy13;
     197           0 :         if (yych <= 0x8F) goto yy24;
     198           0 :         goto yy13;
     199             : yy21:
     200       12614 :         ++YYCURSOR;
     201             : #line 91 "ext/phar/phar_path_check.re"
     202             :         {
     203             :                         if (**s == '/') {
     204             :                                 (*s)++;
     205             :                                 (*len)--;
     206             :                         }
     207             :                         if ((p - (const unsigned char*)*s) - 1 != *len)
     208             :                         {
     209             :                                 *error ="illegal character";
     210             :                                 return pcr_err_illegal_char;
     211             :                         }
     212             :                         *error = NULL;
     213             :                         return pcr_is_ok;
     214             :                 }
     215             : #line 216 "ext/phar/phar_path_check.c"
     216             : yy23:
     217           6 :         yych = *++YYCURSOR;
     218           6 :         goto yy13;
     219             : yy24:
     220           0 :         yych = *++YYCURSOR;
     221           0 :         if (yych <= 0x7F) goto yy2;
     222           0 :         if (yych >= 0xC0) goto yy2;
     223           0 :         yych = *++YYCURSOR;
     224           0 :         if (yych <= 0x7F) goto yy2;
     225           0 :         if (yych >= 0xC0) goto yy2;
     226             : yy26:
     227           6 :         yych = *++YYCURSOR;
     228           6 :         goto yy4;
     229             : yy27:
     230           0 :         yych = *++YYCURSOR;
     231           0 :         if (yych <= 0x7F) goto yy2;
     232           0 :         if (yych >= 0xC0) goto yy2;
     233           0 :         yych = *++YYCURSOR;
     234           0 :         if (yych <= 0x7F) goto yy2;
     235           0 :         if (yych <= 0xBF) goto yy26;
     236           0 :         goto yy2;
     237             : yy29:
     238           2 :         yych = *++YYCURSOR;
     239           2 :         if (yych <= 0x7F) goto yy2;
     240           2 :         if (yych >= 0xC0) goto yy2;
     241           2 :         yych = *++YYCURSOR;
     242           2 :         if (yych <= 0x7F) goto yy2;
     243           2 :         if (yych <= 0xBF) goto yy26;
     244           0 :         goto yy2;
     245             : yy31:
     246           0 :         yych = *++YYCURSOR;
     247           0 :         if (yych <= 0x7F) goto yy2;
     248           0 :         if (yych <= 0xBF) goto yy26;
     249           0 :         goto yy2;
     250             : yy32:
     251           0 :         yych = *++YYCURSOR;
     252           0 :         if (yych <= 0x7F) goto yy2;
     253           0 :         if (yych <= 0xBF) goto yy26;
     254           0 :         goto yy2;
     255             : yy33:
     256           6 :         yych = *++YYCURSOR;
     257           6 :         if (yych <= 0x7F) goto yy2;
     258           4 :         if (yych <= 0xBF) goto yy26;
     259           0 :         goto yy2;
     260             : yy34:
     261           0 :         yych = *++YYCURSOR;
     262           0 :         if (yych <= 0x7F) goto yy2;
     263           0 :         if (yych <= 0xBF) goto yy26;
     264           0 :         goto yy2;
     265             : yy35:
     266           7 :         yych = *++YYCURSOR;
     267           7 :         if (yych <= 0x00) goto yy39;
     268           7 :         if (yych <= '-') goto yy2;
     269           7 :         if (yych <= '.') goto yy38;
     270           2 :         if (yych <= '/') goto yy39;
     271           2 :         goto yy2;
     272             : yy36:
     273           2 :         ++YYCURSOR;
     274             : #line 60 "ext/phar/phar_path_check.re"
     275             :         {
     276             :                         *error = "double slash";
     277             :                         return pcr_err_double_slash;
     278             :                 }
     279             : #line 280 "ext/phar/phar_path_check.c"
     280             : yy38:
     281           5 :         yych = *++YYCURSOR;
     282           5 :         if (yych <= 0x00) goto yy41;
     283           0 :         if (yych == '/') goto yy41;
     284           0 :         goto yy2;
     285             : yy39:
     286           0 :         ++YYCURSOR;
     287             : #line 68 "ext/phar/phar_path_check.re"
     288             :         {
     289             :                         *error = "current directory reference";
     290             :                         return pcr_err_curr_dir;
     291             :                 }
     292             : #line 293 "ext/phar/phar_path_check.c"
     293             : yy41:
     294           5 :         ++YYCURSOR;
     295             : #line 64 "ext/phar/phar_path_check.re"
     296             :         {
     297             :                         *error = "upper directory reference";
     298             :                         return pcr_err_up_dir;
     299             :                 }
     300             : #line 301 "ext/phar/phar_path_check.c"
     301             : }
     302             : #line 108 "ext/phar/phar_path_check.re"
     303             : 
     304             : }

Generated by: LCOV version 1.10

Generated at Sat, 22 Nov 2014 23:01:29 +0000 (3 days ago)

Copyright © 2005-2014 The PHP Group
All rights reserved.