--- parser3/src/classes/file.C 2019/11/13 22:05:47 1.266 +++ parser3/src/classes/file.C 2019/11/22 22:24:45 1.269 @@ -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.269 2019/11/22 22:24:45 moko Exp $"; // defines @@ -283,11 +283,9 @@ static void _load(Request& r, MethodPara if(Value *vlimit=(Value *)options->get(sql_limit_name)){ limit=r.process(*vlimit).as_int(); } - // no check on options count here, see file_read + // no check on options count here, see file_load } - 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, 0, offset, limit); Value* vcontent_type=0; if(file.headers){ @@ -1084,7 +1082,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 +1109,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 {