-rw-r--r-- | lib/util.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/util.cc b/lib/util.cc index 74039c6..069590b 100644 --- a/lib/util.cc +++ b/lib/util.cc @@ -1,34 +1,35 @@ #include <sys/types.h> #include <sys/stat.h> +#include <cassert> #include <konforka/util.h> namespace konforka { /* * XXX: this code is borrowed from sitecing as is, although it should be optimized. */ string normalize_path(const string& p,int o) { const char *s = p.c_str(); if( s[0]=='.' && s[1]=='/' ) s += 2; // skip leading './' if(o&strip_leading_slash) for(;(*s)=='/';s++); string rv; string::size_type notslash = 0; for(;*s;s++) { if(s[0]=='/') { if(s[1]=='/') continue; // skip duplicate slash if(s[1]=='.' && s[2]=='/') { // '/./' sequence encountered s += 2; continue; } } if( (o&restrict_dotdot) && ( ( rv.empty() && s[0]=='.' && s[1]=='.' && s[2]=='/' ) // '^../' || ( s[0]=='/' && s[1]=='.' && s[2]=='.' && (s[3]=='/' || s[3]==0) ) // '/../' or '/..$' ) |