forked from sheetjs/sheetjs
		
	properly detect encrypted ODS
This commit is contained in:
		
							parent
							
								
									222995ebdf
								
							
						
					
					
						commit
						ebfb5bc7c9
					
				| @ -844,12 +844,10 @@ var XLSBRecordEnum = { | ||||
| var XLSBRE = evert_key(XLSBRecordEnum, 'n'); | ||||
| XLSBRE["BrtFRTArchID$"] = 0x0010; | ||||
| 
 | ||||
| /* [MS-XLS] 2.3 Record Enumeration */ | ||||
| /* [MS-XLS] 2.3 Record Enumeration (and other sources) */ | ||||
| var XLSRecordEnum = { | ||||
| 	/*::[*/0x0003/*::]*/: { n:"BIFF2NUM", f:parse_BIFF2NUM }, | ||||
| 	/*::[*/0x0004/*::]*/: { n:"BIFF2STR", f:parse_BIFF2STR }, | ||||
| 	/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */ | ||||
| 	/*::[*/0x0006/*::]*/: { n:"Formula", f:parse_Formula }, | ||||
| 	/*::[*/0x0009/*::]*/: { n:'BOF', f:parse_BOF }, | ||||
| 	/*::[*/0x000a/*::]*/: { n:'EOF', f:parsenoop2 }, | ||||
| 	/*::[*/0x000c/*::]*/: { n:"CalcCount", f:parseuint16 }, | ||||
| 	/*::[*/0x000d/*::]*/: { n:"CalcMode", f:parseuint16 }, | ||||
| @ -870,7 +868,6 @@ var XLSRecordEnum = { | ||||
| 	/*::[*/0x001d/*::]*/: { n:"Selection" }, | ||||
| 	/*::[*/0x0022/*::]*/: { n:"Date1904", f:parsebool }, | ||||
| 	/*::[*/0x0023/*::]*/: { n:"ExternName", f:parse_ExternName }, | ||||
| 	/*::[*/0x0024/*::]*/: { n:"COLWIDTH" }, | ||||
| 	/*::[*/0x0026/*::]*/: { n:"LeftMargin", f:parse_Xnum }, | ||||
| 	/*::[*/0x0027/*::]*/: { n:"RightMargin", f:parse_Xnum }, | ||||
| 	/*::[*/0x0028/*::]*/: { n:"TopMargin", f:parse_Xnum }, | ||||
| @ -1040,7 +1037,6 @@ var XLSRecordEnum = { | ||||
| 	/*::[*/0x0203/*::]*/: { n:"Number", f:parse_Number }, | ||||
| 	/*::[*/0x0204/*::]*/: { n:"Label", f:parse_Label }, | ||||
| 	/*::[*/0x0205/*::]*/: { n:"BoolErr", f:parse_BoolErr }, | ||||
| 	/*::[*/0x0206/*::]*/: { n:"Formula", f:parse_Formula }, | ||||
| 	/*::[*/0x0207/*::]*/: { n:"String", f:parse_String }, | ||||
| 	/*::[*/0x0208/*::]*/: { n:'Row', f:parse_Row }, | ||||
| 	/*::[*/0x020b/*::]*/: { n:"Index" }, | ||||
| @ -1050,7 +1046,6 @@ var XLSRecordEnum = { | ||||
| 	/*::[*/0x023e/*::]*/: { n:"Window2", f:parse_Window2 }, | ||||
| 	/*::[*/0x027e/*::]*/: { n:"RK", f:parse_RK }, | ||||
| 	/*::[*/0x0293/*::]*/: { n:"Style" }, | ||||
| 	/*::[*/0x0406/*::]*/: { n:"Formula", f:parse_Formula }, | ||||
| 	/*::[*/0x0418/*::]*/: { n:"BigName" }, | ||||
| 	/*::[*/0x041e/*::]*/: { n:"Format", f:parse_Format }, | ||||
| 	/*::[*/0x043c/*::]*/: { n:"ContinueBigName" }, | ||||
| @ -1207,20 +1202,49 @@ var XLSRecordEnum = { | ||||
| 	/*::[*/0x1068/*::]*/: { n:"Fbi2" }, | ||||
| 
 | ||||
| 	/*::[*/0x0000/*::]*/: { n:"Dimensions", f:parse_Dimensions }, | ||||
| 	/*::[*/0x0001/*::]*/: { n:"BIFF2BLANK" }, | ||||
| 	/*::[*/0x0002/*::]*/: { n:"BIFF2INT", f:parse_BIFF2INT }, | ||||
| 	/*::[*/0x0003/*::]*/: { n:"BIFF2NUM", f:parse_BIFF2NUM }, | ||||
| 	/*::[*/0x0004/*::]*/: { n:"BIFF2STR", f:parse_BIFF2STR }, | ||||
| 	/*::[*/0x0005/*::]*/: { n:"BoolErr", f:parse_BoolErr }, | ||||
| 	/*::[*/0x0007/*::]*/: { n:"String", f:parse_BIFF2STRING }, | ||||
| 	/*::[*/0x0008/*::]*/: { n:"BIFF2ROW" }, | ||||
| 	/*::[*/0x0009/*::]*/: { n:'BOF', f:parse_BOF }, | ||||
| 	/*::[*/0x000b/*::]*/: { n:"Index" }, | ||||
| 	/*::[*/0x0016/*::]*/: { n:"ExternCount", f:parseuint16 }, | ||||
| 	/*::[*/0x001e/*::]*/: { n:"BIFF2FORMAT", f:parse_BIFF2Format }, | ||||
| 	/*::[*/0x001f/*::]*/: { n:"BIFF2FMTCNT" }, /* 16-bit cnt of BIFF2FORMAT records */ | ||||
| 	/*::[*/0x0020/*::]*/: { n:"BIFF2COLINFO" }, | ||||
| 	/*::[*/0x0021/*::]*/: { n:"Array", f:parse_Array }, | ||||
| 	/*::[*/0x0024/*::]*/: { n:"COLWIDTH" }, | ||||
| 	/*::[*/0x0025/*::]*/: { n:"DefaultRowHeight", f:parse_DefaultRowHeight }, | ||||
| 	// 0x2c ??
 | ||||
| 	// 0x2d ??
 | ||||
| 	// 0x2e ??
 | ||||
| 	// 0x30 FONTCOUNT: number of fonts
 | ||||
| 	/*::[*/0x0032/*::]*/: { n:"BIFF2FONTXTRA", f:parse_BIFF2FONTXTRA }, | ||||
| 	/*::[*/0x0034/*::]*/: { n:"DDEObjName" }, | ||||
| 	// 0x35: INFOOPTS
 | ||||
| 	// 0x36: TABLE (BIFF2 only)
 | ||||
| 	// 0x37: TABLE2 (BIFF2 only)
 | ||||
| 	// 0x38: WNDESK
 | ||||
| 	// 0x39 ??
 | ||||
| 	// 0x3a: BEGINPREF
 | ||||
| 	// 0x3b: ENDPREF
 | ||||
| 	/*::[*/0x003e/*::]*/: { n:"BIFF2WINDOW2" }, | ||||
| 	// 0x3f ??
 | ||||
| 	// 0x46: SHOWSCROLL
 | ||||
| 	// 0x47: SHOWFORMULA
 | ||||
| 	// 0x48: STATUSBAR
 | ||||
| 	// 0x49: SHORTMENUS
 | ||||
| 	// 0x4A:
 | ||||
| 	// 0x4B:
 | ||||
| 	// 0x4C:
 | ||||
| 	// 0x4E:
 | ||||
| 	// 0x4F:
 | ||||
| 	// 0x58: TOOLBAR (BIFF3)
 | ||||
| 
 | ||||
| 	/* - - - */ | ||||
| 	/*::[*/0x0034/*::]*/: { n:"DDEObjName" }, | ||||
| 	/*::[*/0x0043/*::]*/: { n:"BIFF2XF" }, | ||||
| 	/*::[*/0x0044/*::]*/: { n:"BIFF2XFINDEX", f:parseuint16 }, | ||||
| 	/*::[*/0x0045/*::]*/: { n:"BIFF2FONTCLR" }, | ||||
| @ -1230,10 +1254,18 @@ var XLSRecordEnum = { | ||||
| 	/*::[*/0x0087/*::]*/: { n:"Addin" }, | ||||
| 	/*::[*/0x0088/*::]*/: { n:"Edg" }, | ||||
| 	/*::[*/0x0089/*::]*/: { n:"Pub" }, | ||||
| 	// 0x8A
 | ||||
| 	// 0x8B LH: alternate menu key flag (BIFF3/4)
 | ||||
| 	// 0x8E
 | ||||
| 	// 0x8F
 | ||||
| 	/*::[*/0x0091/*::]*/: { n:"Sub" }, | ||||
| 	// 0x93 STYLE
 | ||||
| 	/*::[*/0x0094/*::]*/: { n:"LHRecord" }, | ||||
| 	/*::[*/0x0095/*::]*/: { n:"LHNGraph" }, | ||||
| 	/*::[*/0x0096/*::]*/: { n:"Sound" }, | ||||
| 	// 0xA2 FNPROTO: function prototypes (BIFF4)
 | ||||
| 	// 0xA3
 | ||||
| 	// 0xA8
 | ||||
| 	/*::[*/0x00a9/*::]*/: { n:"CoordList" }, | ||||
| 	/*::[*/0x00ab/*::]*/: { n:"GCW" }, | ||||
| 	/*::[*/0x00bc/*::]*/: { n:"ShrFmla" }, /* Not necessarily same as 0x04bc */ | ||||
| @ -1246,11 +1278,13 @@ var XLSRecordEnum = { | ||||
| 	/*::[*/0x00ea/*::]*/: { n:"TabIdConf" }, | ||||
| 	/*::[*/0x0162/*::]*/: { n:"XL5Modify" }, | ||||
| 	/*::[*/0x01a5/*::]*/: { n:"FileSharing2" }, | ||||
| 	/*::[*/0x0206/*::]*/: { n:"Formula", f:parse_Formula }, | ||||
| 	/*::[*/0x0209/*::]*/: { n:'BOF', f:parse_BOF }, | ||||
| 	/*::[*/0x0218/*::]*/: { n:"Lbl", f:parse_Lbl }, | ||||
| 	/*::[*/0x0223/*::]*/: { n:"ExternName", f:parse_ExternName }, | ||||
| 	/*::[*/0x0231/*::]*/: { n:"Font" }, | ||||
| 	/*::[*/0x0243/*::]*/: { n:"BIFF3XF" }, | ||||
| 	/*::[*/0x0406/*::]*/: { n:"Formula", f:parse_Formula }, | ||||
| 	/*::[*/0x0409/*::]*/: { n:'BOF', f:parse_BOF }, | ||||
| 	/*::[*/0x0443/*::]*/: { n:"BIFF4XF" }, | ||||
| 	/*::[*/0x086d/*::]*/: { n:"FeatInfo" }, | ||||
|  | ||||
| @ -556,11 +556,10 @@ var parse_content_xml = (function() { | ||||
| 
 | ||||
| function parse_ods(zip/*:ZIPFile*/, opts/*:?ParseOpts*/)/*:Workbook*/ { | ||||
| 	opts = opts || ({}/*:any*/); | ||||
| 	var ods = !!safegetzipfile(zip, 'objectdata'); | ||||
| 	if(ods) parse_manifest(getzipdata(zip, 'META-INF/manifest.xml'), opts); | ||||
| 	if(safegetzipfile(zip, 'META-INF/manifest.xml')) parse_manifest(getzipdata(zip, 'META-INF/manifest.xml'), opts); | ||||
| 	var content = getzipstr(zip, 'content.xml'); | ||||
| 	if(!content) throw new Error("Missing content.xml in " + (ods ? "ODS" : "UOF")+ " file"); | ||||
| 	var wb = parse_content_xml(ods ? content : utf8read(content), opts); | ||||
| 	if(!content) throw new Error("Missing content.xml in ODS / UOF file"); | ||||
| 	var wb = parse_content_xml(utf8read(content), opts); | ||||
| 	if(safegetzipfile(zip, 'meta.xml')) wb.Props = parse_core_props(getzipdata(zip, 'meta.xml')); | ||||
| 	return wb; | ||||
| } | ||||
|  | ||||
| @ -46,10 +46,11 @@ | ||||
| 	"devDependencies": { | ||||
| 		"@sheetjs/uglify-js": "~2.7.3", | ||||
| 		"@types/node": "^8.5.9", | ||||
| 		"acorn": "7.4.1", | ||||
| 		"alex": "^9.1.0", | ||||
| 		"blanket": "~1.2.3", | ||||
| 		"dtslint": "^0.1.2", | ||||
| 		"eslint": "^7.23.0", | ||||
| 		"eslint": "7.23.0", | ||||
| 		"eslint-plugin-html": "^6.1.2", | ||||
| 		"eslint-plugin-json": "^2.1.2", | ||||
| 		"jsdom": "~11.1.0", | ||||
|  | ||||
| @ -227,7 +227,7 @@ apachepoi_MatrixFormulaEvalTestData.xlsx | ||||
| apachepoi_NewStyleConditionalFormattings.xlsx | ||||
| apachepoi_NewlineInFormulas.xlsx | ||||
| # apachepoi_NumberFormatApproxTests.xlsx # xlml | ||||
| apachepoi_NumberFormatTests.xlsx | ||||
| apachepoi_NumberFormatTests.xlsx # upstream changed file | ||||
| apachepoi_RepeatingRowsCols.xlsx | ||||
| apachepoi_SampleSS.strict.xlsx | ||||
| apachepoi_SampleSS.xlsx | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user