--- parser3/src/classes/file.C 2019/11/13 22:05:47 1.266 +++ parser3/src/classes/file.C 2019/11/23 23:48:40 1.271 @@ -26,7 +26,7 @@ #include "pa_vregex.h" #include "pa_version.h" -volatile const char * IDENT_FILE_C="$Id: file.C,v 1.266 2019/11/13 22:05:47 moko Exp $"; +volatile const char * IDENT_FILE_C="$Id: file.C,v 1.271 2019/11/23 23:48:40 moko Exp $"; // defines @@ -272,22 +272,7 @@ static void _load(Request& r, MethodPara if(!user_file_name) user_file_name=&lfile_name; - size_t offset=0; - size_t limit=0; - - if(options){ - options=new HashStringValue(*options); - if(Value *voffset=(Value *)options->get(sql_offset_name)){ - offset=r.process(*voffset).as_int(); - } - if(Value *vlimit=(Value *)options->get(sql_limit_name)){ - limit=r.process(*vlimit).as_int(); - } - // no check on options count here, see file_read - } - File_read_result file=file_load(r, lfile_name, - as_text, options, true, 0, offset, limit - ); + File_read_result file=file_load(r, lfile_name, as_text, options, true); Value* vcontent_type=0; if(file.headers){ @@ -1084,7 +1069,7 @@ static void _base64(Request& r, MethodPa bool dynamic=!(&r.get_self() == file_class); if(dynamic) { VFile& self=GET_SELF(r, VFile); - if(params.count() && params[0].is_string()) { + if(params.count()>1 || params.count()==1 && params[0].is_string()) { // decode: // ^file::base64[encoded] // backward // ^file::base64[mode;user-file-name;encoded[;$.content-type[...] $.strict(true|false)]] @@ -1111,8 +1096,7 @@ static void _base64(Request& r, MethodPa const char* encoded=params.as_string(param_index, PARAMETER_MUST_BE_STRING).cstr(); char* decoded=0; - size_t length=0; - pa_base64_decode(encoded, strlen(encoded), decoded, length, options); + size_t length=pa_base64_decode(encoded, strlen(encoded), decoded, options); self.set(true/*tainted*/, is_text, decoded, length, user_file_name, vcontent_type, &r); } else {