From 101a03ee302670ae4b7f3989dcfa5512bdbe0dc1 Mon Sep 17 00:00:00 2001 From: Timothe Litt Date: Thu, 3 Mar 2016 15:49:13 -0500 Subject: [PATCH] Fix compilation with DEBUG. Split out & improve list parser Various errors in DEBUG code. List parser for devices and labels used unchecked fixed-size arrays. Make dynamic, and deal with ", " Add some paranoia checks to diskio. Fix memory leak under WIN32. In phynt, write in the right direction (from Larry Baker notes) --- extracters/ods2/ODS2-Image.exe | Bin 66560 -> 69120 bytes extracters/ods2/ODS2.exe | Bin 70144 -> 72704 bytes extracters/ods2/access.c | 6 +-- extracters/ods2/diskio.c | 14 ++++-- extracters/ods2/ods2.c | 89 +++++++++++++++++++++++---------- extracters/ods2/phynt.c | 2 +- extracters/ods2/phyunix.c | 4 +- 7 files changed, 77 insertions(+), 38 deletions(-) diff --git a/extracters/ods2/ODS2-Image.exe b/extracters/ods2/ODS2-Image.exe index 86a75a70c7676004f216557f5e80a91867422fb4..cfe940447f3a1408ccc084abf83b4be243a05c96 100644 GIT binary patch delta 27003 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 delta 24439 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 K+{E4*@qYkIOjK3? delta 20364 zcmd_ReOy%47B_y*ILN3dprH5)C@Lz-yuZJpfM}w_yQZQh>Jd#*2h&mqg(>kkrER@w zS?Sfv%8J62d?`$?U{RNf%$t;yRL7t$B^ebtzwbUX;M9Hj{GR*#`JB(Jv(H|8t+m%) zd+oJf&Y6-bX~_}kE;B3awxqh=dH0Ja_IE-3rr`aTkgwkqw7*tNBgi}};#NMV>6Y!Gw4_s6+iMNN!^?ZbxkW|%6V7W&Yy zRg>OqZol?UhA~r&oMkxa?$`k#c9yB{1F{boX4vl7p#$rGV;H-S$9Jzsp4}Zgr2i!6 zk_}Gaq$h9-15}Z3*%AHvsqhFQMh!Sa21>@VZNw@WJMK2}0hb+eCaqnva`j?{>DLzp zsF~@9R9gA4q>z10YG7G8F$PVNG~Y)GgY2xDycjeZs1JhPl$>2pcK1}peEI^zlwJto zbHWzn^XF?Mkig94znXuZPic2}Bh{q2=T^ycQDj;0*}hfb48zY%$lyDKm%@oc7Rknw zsj^YwlMhlE(gpeR&lj?}!p(u?0ofrozH)f40Z^b)(R-mprT)O~qfu3h;zLh{pZm67 zCU*vSZ)Ch!Dl25Yk#TrL-MmIkE`(G__Vp+0`@SX7g%e#r2kP72uU4|Mh-8MoFPRZa zMuzpUA;Rw`wf zH>pCNCq$X)ZTuj9a$E+-pjDt=!39$1fZD~Ux0w{h6ZxFx9yx7qgn+GzD(e$a`ipdJ zG;fxe^u@B$8`9EhX-g}=xi$6lJkXWiE?ECmOAqA5x@C~Yr?kD{MUm>3k3aNe*tF7W zNsk}hms~edxYST_8|pcOMFB12LQlHvWBBxTPX=px+u5(QgS}7czT^x#eS8dr1($A! zVUSq~iDDJc_Mla?Z%t{VU1i@|LlbK8ly*}}Na(hgZ+pEW;bxIAgir4%PmO2bWKkmQR(HPYt2YD%}QS^WK0i=m+K< zD9P!#UA;ZUyFI0WPZ1p3(?8Djq}OL;)}++4a0cPqU%lS09w`o~nc6`szwrSyE!`|I z{L~JrRa#7F*_%M!a3K+Rw8A_)(!C|Wu4hlwtzsEJzv)H=c*}LATVj~vK|7#eYEoHsaqrRxr0ja> z#ndFWJU@m{jl*b&x|M2Yi~AR{4q@bG86D}enpDv#OJ>^H(k*dJsCxl~g`P<9^6!$T zWN}10WO%`((31|mXH##MPm`8zjAxvq`J{N>G3?wsVWwZ#MsY_mV!8&t^mG{1yYV)f zR>(r{)Od#{HO`TjAr$=6>xI(gDQ!pLu}^`3&yV+{s-c&pTu)978OD0aCqrUgS;o*4 z)uAUYO*m(&ca6*vI$9{Bbg8M7`cQG$QnZY54z5XQt3n%E!tg-dvLzS~wDMaiZESHr zv={~xCSZ`Enf&}VpT9bj`P6tmE$ZB*u=1Ju68+fq<9Wx7@?7(2$QHfLRrWg7Em%Yt zX6x4(Fh))n(W>%mQpNe9<)bXFt-H|y(dkXZnp}Z{sL~4&Ew6Fa;l9pm%y5)e%c(wQ zQJ*MxHSM}aNJd<6B$TIIDbHz!3p>rBu9H(oEHzA)6f5DEp(m$H_)MuMxwlvK;mGifm!22=~`+UKzCPnm4J|$`a z%pU~TE)T<;A%;0gT^;#oM68ttUdN%dVM$B|-!~aaCLd`>;>gJ4;t?slmwo6%vw@sY zTY6!bsjmZ%&OQz<>O-Q8o{Jd&aCGX>1C;m^+JlDtVa_4^%&5>ebE6@J`;h!I`UDHiG;-HUZki#V2E0TOL15 z|1g}2PR2Qnd6}MkbC!QbyO3Ko9!kce^dYzVQ8TP16nWM?wC>O@jGZb5L7zgdIFZ(&isZ^9bf zdnZi6eP+Ti+*c$_?iT`qp>MvMQJ&K2jSL~D6K+cKzabS9qxz>ch}II#AuUAj#F0-Y zj_WV~S9IhgeQF5M<(nacIu4&A!&ovG2qO61X(r<42 z>&=PcQ)2Qm9YWkguy@KZK0Ri_`SKJ2vysCS5t@}L^m&N%kw>!+k_qzEz7K*ZXIN$- zlP7F@kZh5Ul`Lx}&&fwcOl}rcILa1>I=C~w7Ld>7BPGlSM4}kYx=FlZSOOz9Dr702 zp1|i|d@n8UlUaIRk|iv-g2^Byj8Bh1Ls>_L@YHouq{szZjbgDx`6)?I#z?BaBr}ys zk>cPD;pd~hA(T4HAryW|jwmzPGV-(XUdimsWU0y`S^h=kGpZG=WX30?zvhS}_Zq3v z?309CuFTY)l(1V!Z-YT{=_*MvIM~hPFNPG{8x2$0O(f2kf%|%6D(+{EiIRg?$@j)t zlEe>*%`}=lNS2tU_HDXi$3(dSA+(*jM&2+@0~xe}%79Gy)c#rL|s?WEs*QZshB12e--3|F~srST{1;kNm)*k*Gf>GV3Tc^%+im z4Yvf`yqCq`i@5FfI{V~t@gk0f@$^o*wpG11S9op%SzwLPtw#rHM33_?hKj?pg!lri z<+unxSBNL2*};V%cQNHR$Zpw*2zSD|2u+EyC5M=y4VO)65q&tDagYPg?yJQ?Rq1$e zXg-y&&~?8msDIdC6jlj%n7Yc zLkVo?!#zh-$>)YsOL#8>C(14LvR%sLaTV7|c*>Bl?gk&bP7PQ>Oey1H*U;H0C$i@{zsZVtS#Dbq57|75~m zn&bANicD?~tq3}Wl%J*8J2vOt*~oi#1~p@pnpzd zCTG4*o|!sjjJivsJWk%F0{FLqeH`y@f@}vDcb)W08|Vrw$8s{X%!5jJw;c@(Jz1Z5 zP6%^wVUSVdE&_@g)_a+g`h|wkbrhqz)DqmaMcLDLJIGAC)fgM0ZYPU|3ewVZ($Ws; zx-SFADXhn#=lU@IG0Js(NsgrrPx3L||KAzgzr@J%_r=~#s4$aj1qzxqeMx#xi&puh z&<)jpuf9tP*YG8oH*L7f$G86fH=k!OwF-9zm1hb)e?sVXcfz`ug6QVqAeGaBL0&FC zUwjOi05)D#BL8~+=93ONG$HG%ZadH+TJEYdlBf@^3X{lou_ej0q9JAzhuJk%-~ zEkn3{G$-09vn7PvNpoW39YXR=aRm8DIVVao1UYd0Uh1Biej62hsi8)Sq6HoS1sQ&e zXM-VAU?|?*M*Z0@NG}Q!$Y*y&rzGIHIOvUdB#th=Fp=-&AH_aui7!1n1DY~bQjydb z1pQUFenD$4BS|v`1~=k4Ls&-gXAE>*z;mWBU6ddzJ)1!Joe_Sf3Xy4ISD`2zg`z#U z1EQ2LU!lJpG$O=9DbSm zAR<$!15KBRkg6gWDc1Aczaf%RBA;m&f+$1S_6H)DPn66V*;SuItZ%-k zQwWVdG-9ZM#E#@iGi}55(4RjN<2s8tD;G<|iA{oR!kw%X+4wtI8M1L*SuRR^;-4h1 zJ0cDLql}OyGJMw1|CO6*B5P(1b^VWZQ@h;w0^x}6Dhn`egkjnU_qb_brz`64@5Mev zfn6-{>=O$zgpTjJ3Swvh>Eq}<K?gzc4$v|1Zog_)Q@#J(~s_i4%Pn%Ils7RM)B?))cVda+e~W zZ2j$>Z7gCPUHtZCO2zdJvjr=KYvgvukO6cx_~$j)gv=oWUqR>GSq5=kE3vtmT9?Su zfo0n%x`r%0n~eI|H=6P640@vpNhZIS;^?0KIIID7 zru3|X3f(-3+a(IXK%-0axmc>JvfdMZU5r*@#hfJ^#nKaNDL)a;=(?Bkm;E%n_mM0+ z^9rC2@C$&+wln{qYd2d#e$N^a^UFOx*&erZlh=!Flie0z(z5Nu zlszH+FZw`SOb;w6d-@J3eQcN%kWpguZA#P;32Jvy1*y1qqdiDg# z`!@1rwzk(Z2!^5{5}gw(X22!4`AsI1S+?;c(lhukyssztm1yiUp0x!O_V%iCDU^4uAM$Ta9~~?|!p6HqEwK&_APDj7rG1wv3{6EvXY25c zuITES^_qaba|@l~5OH;n5izt4b9=W;{MY@7a2>N`NR}W)tq!gZIbVMwNWt^qp9@s) z1kYPy&w|1(HJ%IM-7B4JRbn@Wq7iQ>3|^{wqwJs#}8k?_#(t zch|eTUb=8bGg%uMH)nzigI;Xlc2GM6W3rfS>B+xN z*|CH4cg_Ngt>VZmVGeu~$7!gmTm7!V^`1~R-={r)mo$TubF@zchiZD59vB2xN*0SuB%tYlyv?UOvC;(rdw-ZoQ~B!Zv8Lcn-NbKOLtm$0qDhllFWKJCTfE5FP6q^BCv||sBgAR|o z16aIW^zXKBxsM_r>?(+p6SPUgtOR7k}MT0de(QaFRi-^IIem~9;pgV?t z5fv(An0?0e&}@eA+5|Fhk$y-*AZdV4Y{(%mFH+9Xa?F1q7@yPSG&t;ny_)_*=Sci? zI3-HBXD+KD+wYlekb}4ToXK}af`No7b>Ht^uVix!$9*H(gwB3d^i`!e0lp`Mkim-+ z28|1Ft9w1}W8iTJ5;K{%c$_f}jNR78!G^4>d{qEf@v|*B*GjFl8E#m-cY=d!qqio?dzoweh74O`h+KA=##Z0PsY$}njZ@<)Qn)0+HOXgCIvAar z(374f_^M}bGwzvO@(t0TG;_y&yF*8IMwewIXoiD}2X%LB?WUUKrz*9?gds9j#efPY zf>B5u9CKsv9UfT~+@PzsI~+v5bP~&u1xp9II?%X_$$gu<#s7hnIDC3Ige17RgKMOw z5SJXVTA<8AKVhjQPE_Rz2%$;?5{&r(u0M!ZJ4X8C3pe3xf%1m>%f`5R(}PPy{3<)}EtOSzn!Hver^z!_@icj=DuyOcVhT{b=Np5Kth6)70h95(0g#9K{|a~>Pysjz5Zx6w1n1IL89o#s`?(m`c1l-mdq-l!z8PxEX=IB$iS^RLJHqwm2H6zcuyI`4(G#@u%g%oSe*ONoMZfvd(&kM0;%HD#yLoi|AS z@*$FyH^}|V>=u*KZxj8L{2RqI{F(dLB$a!4Snc+2tozsHRztr zVT^MC*W_yt`E|LH-9;uAj)`2}MelWHr#XkFIeU5|HxRBcyZ=fE-4FO1AQU2E*O2!M z<6JMi37_#F%{xayNAcZ$81IP56mB1*l}q_6EkUO@p>lr|If*$HgY4UY@jz#Odg=~S zZf#8n3S5yvB;K;*@RBfo-=27%6ihzJRDpy zHQ7f#1~}@}trw$QC@^i1uC1S2YN0NR)7<@3Xj&NM6c1m0%Xf~>W|_jnr|1zDo%sum z7^<7<;S2cCpxW8vB2@QpQS_(>Tu{r;HQUDpghM!nBQ4%Tb>@BcM~fDe_pKg7#|s^q z!l>y!ljGDBD-q0Rfjtcp%IEcp>+=pQf9W9W8jm#PHU!X1g|lb8Ug7AgxMhVSP@@%0 z06CesDi5!r-K!EtiU&pXH8ejkGmG0!g&-GFdNHaL9a>Fy*&nT{N^C^|*BnrVtZNRS z?`jZun^4AEXg6S5{g#|s9eo!aW;fnJ&FGSo8-uGFK+H7AafYo7?5jOZilpc*a_S#vqV2ZJ-v4z?nlAL(6J@ zW<&;;-JM^6awzG4)yK)j0^XGymRZOO^h}r@xtc^FaotQ4L?JQV`Jr3~?U7G-un9W2 zKU8a>aS>j@r*vZQ;EM?HH3wDN-yBRxDbOzmP!3oE*bjIfP&e1_?&8EDV{=_|{tp&T z&;;uz+BcWEI$vUsN@9ek5ofqPtz^$S6?PZ3>+UjcqNV;7hit)IRW&~P{iRXL2*BE$ESc zOEQ-xKKl+lvH$F@A65D47hl>9#zf%yj}`a|cCh9cr_|i5xJOdUP5zvxi1kP42^T}l zo<>XsL2PK*UObuY#rKw;6T~N*876B=ziqMO$XTzDy^Gy z*sx!ohb~vL^0-|hLp(XWWjs5Tyuam};A4Kw8P|wJ%Fea_lWq_`;hO#FaevDBQ?)-8 zz9+p(9D`5OgBCh7Y?euKL)}gAn9w%|@tP2_wq!cKSvp&y?pxc2ag<(H7?B~wJV$Pq zD8lAH2Zh>l^SI+EqPtbw)}dohX?>!ygneRI#+hfa#vu&tqTT1G-MV!szG!)J>yU(x zpY@B`;42cFABJ5>RK1d;Q`cTkNv>~=WoMJ1ZLyM-ZI$ucVp-R_YF~wUg5eoa z5SJDpC*+PCjF&Dsk9G3|`FRrl4G;P&A4{UD+2EWjEcWvROcbrjhaxJklxDHvYYt=F z`Ff^2rIFgg?6$I}$OCR8yPBMEk7ZvWpSxp~^#Rok>)!c>Dt%2rg*7RSW(*_xouc^3 zO*>IMxNH3BTeRyj7U|yGhE2=4Z+i9E4AVP=*$Pl&0hc4o$P{{Xkd_BCgZ;HsCO`B& z{RT}{UJ$YCVcL6P8JQ0HnOJoQj+qaT7t3v|y0WD_oRzdyklQ=P1;_v3>&Z#HHzEel z<+7!G-#9!hEl-ouePPnhQIaF|Wa-Z7kx{ffd?_C}Of1ik?uZ=m1Nqy|ggzo?7)s)P zAe}omv1iCe&uD!8^|WUmJC1aEj^Hb+Lk};bf_gtPM8b@#9P@~TWjo2ZT}sKkAISV& z6WPZJziT|}A}4lTVV@r#mhTXAjBDu9YR?>G28T{x(_H#1z(Vr8K z)Z1Z+TD~o-$KO4vV{rW490%J(irQq47_;<{uOZ1J#_#Am<_B^wc`m^Y)w}28uH{30 z=*jJJtj>C*v}W+>f+t%xFf&*9iP-myN0+YHvzE;xpYJ&r&QSws8ipjnIbW8i3E!2{DI%~T^`ptGBWaSqab*9IS(3Olr&p7#XOBtdFD2}A7bPjH$ff7@ zN^TdBg-1&yn+nL6N0TLAuO#u$PnP_3C0Y5rL9%QmdG7gx!9{2SjWIJ{cwy*;1u#iU zm~Y3}A8(n(@jclgytsf2c=3{?B%gf#;@aUe3VoInPw%jsp!>^Ed?lHiC&aEG_Z}M* zywfj~Kej}2Y$^Him@1}b5pC))x-GuMGK^t!dvRjuiPR*1W(+>BG|VR{FWrOnBYFO% zILY5R^7ofwC+wU@S!8%^BYs<((~2(N(1E%)H}msb^Rl=Ds0QDoQ}u_w{E6g+Wu*P( zWJy5*F}{*3X}y~~`iflg_{4Nu%w0;RR7{oJlTUV5jFnuPLtd|l4tC_JBRC|A!`h#>$8SwjGbIee9rrcq0~!}PGlZo1l@nk6r01XnAWVJf z`=w&Z&GR>ca4b~k9UVr7RuwvKy^YbpWAGp9h)rT@q;b{gX0N6lnZxvvtDv{z^mdGv zL>@!b!FK!b8RXp68)bzu;TZ^=bG|T)+t+C)A6Grlb2cjEW{})BVk2rncIW~&=BA6q zL%B3sU?=<=Q(ROo-}elpm9t(A&3QGn8n1@dBh12?Aa;C*FCb$WUWI$H4r>M9-+fwn z8Q-fsy$PMNnASb#JikQXQ<_9-)m1-zFzAm%zF|03q8PiS3gl{1=*fdua_9n?bt)^E zO7=!xA7v1JpQDsBK&h%e?;U*<4}}q26>PEPOf3G2b@0p{+4fF5^CoV@e0GFv7tP>?%#a@5 z(N)BC_W9r|Kyo)Oki<7%iL8bQ@8}D-`zPNzT5|JEPIB}tng7;5CN_!$P2#;-ybI#J zRlK*0_YU#iS#Lj?)RTRWB^466tLQevYy&(BI085hxCpom_!96vfWZPf1TYLR9*_+9 z5`Xmi5Ksj;3fKc!54anU3Qz(@0zv?of|;)Y^?(lK=_Ny83u9OpGXxJK0djy5kPMg! z$OYsBZlkibNOu7C0geJ*1DpcX0vZ5KfbRiPR1gJ-155(g0l9!efD^C{umi9M@G_v9 zb+Jr4D)<)A1h@>S1H28W0vrWA4tNx>9k2!91gr#zr%+;B7$)vbyZ?z{I^MD~(zoyA zX+hV20VQ}Y07P{H1cpf^o6qx=Q8gib`zNhi>|B0t%#yWhSFbh3j9%B9shr+mm4?nL zTCyqtTlwOZy=>H!MXSa-V^-55O392KJuTfaD>Iwe8>2|sr_SM1Ru``0_+Kc+HDp8(xY2hW+&2bQ9c`K@cc4TCu+@c|cE*fBc>rlLQYX^mNRyGudtuZgMV4v((ay+_KZBJ1;b|XI z`UgTM(uf!cM%oU-5Tx`Eb&WsV;R88y9C`Yuvt39T4G{Dioi!&bJ0*Q$%EXzovT~-R zrDsh|h{;*CV%6&VR>j=AWZk+&%a+6}UR?n1mFs5{?GJw)Uef84o0*lIB|9}SWL}MR z%CVB@Use~bxF#V#{g5TOabb7tK*IePvFa$s;u!$FXpE<6oj>i$SG;Yf={oTHEC;+4hsU*RY<>)x|{^ z(d6t;d zHUK6j5X&$Pz|~Pa#!28+MHc-&V7FYBQb7w#=qR{z?E`M7h`)oQPes6S6fce%it%09 zeqpW|D6EDo8$7J5FbcRZfLO%_A8R~bymmC&nKl5u{#ZR;F9A;{l)$S2xLQB`pUbL& zxA#Ek@#1u*i|Htk2LLfZ{M|(-Ti;azToHg?G2;EsjRW3(Co4W>1DEEf|8togc&wNF z7u|y3N&qsBY`s0eMRQTe{mJ-D=T$^30KNWP)(m_YEhwS?f<=^rt!ja*_S1&}A9z&( zZ-);5eBe$KcL7&+)gJvXmMuWRY`-9eC5I$qNK>a2`_4n&0c_0PMJ#+GWN?(9BCw+N zPoeVOAJ_ps>OZybjvYL>8i+q%`+(c|*sCn4(nKn@TFecV(}I7)5G7J2%KlAJ>pw6Z z0q7N|$eDl8>e(4o*&ZP3&OFxEgOv{2?q|8vEAU&9Dt0A`0wqz&cHs0~wZI-@{es)B zP{D)f-?-=%D6PR)^dEEvSFbuh7xUOT2|EA_u|Hl%QM?cEXD{9aoD+am{vWQDz!d-j zm7oL;;L-qiefx*Y4qU*sdtzUS`pRAoID-+FgR_OM7~8ein)^TK!l)%Z?m08#sCennW#% zNsRXw1=cR3I6xqdvJ01K&52EyQH(24vE#rU15lPg{C1JWwE;zKbL^Chi5if^ECgf& zHv_OM--oAVM}bcOE)Gz^`S2AHh<<=D;G_V@!aMYBpl|-z&RhW$P4(l$f$N{doB{4Q z0GI0zIvoY_AfTzx&j5mC}qQjZu1Koz= zsf&qt8UY@2NZGO;(jV-|B%bUU#NL*%X^#c8hpsnyhLCTb^ZbG7$som!7pr?cp$=$7et-DA2Z zbw_n?>%P*p==$r&=q>tW{dD~z{W5)sp}!%@U^e6!-Zoq|{9x!X+%~*mtT3K1e(ExI z7;hU@CW9&8#G7`TUNTjh&Y9jZeQf&N^o{8U(=R5kDbj2YGf1;h zyG?taZnN&7u34wl7aDovUK1qS8Kw=1R5?SLr+i5Hcjd>*UzAy@Csds(iF&+Rr8cM+ zsSDLb>c`a2s^3-Dt3OuXP{(PEnlw$J=A@=m!)k+J#k*YEOzmv#VeK*PYuZ}v``WLx zE!v;8ziVT3V|5dCDqW^-wk}_Hziy}QDP0AOTd!->3A%P2qYu$X>ErYV49^%&80H!G zn4U5nHN9eb*VJJ8)HKR`#r%c&8*>j!FUt^%(voj^z_QEof~CRYwM?`oSs%3Sw!UC} z+xoTD^|N)bEzzd7S#48n({0ObE?b%HVH>d>vK_TuvR$(^+rGEmwEb#h9Qe{64mDVw zC|Ap^@+oqM+%5l5-Ykz-7!_L-yA%zIuN7^I+lmn77^PL2t6ZhrqkKYnRQZajI0C*d3A$YQ2(M1*7VcF zYjm1aO^#-PW|M}8BR;RGgacmFe6RUk6ReHXs$j$n?Og2_+IDR}-Eduk&ZJAx-J@Hh zE73io+pjyJ`v~tK{zv^dgUVntq{2Vf z816Te82(~7Ww>H!G&C8S4T7N+-Wq8fYjhbWm=q?h$!wZwiZhQlFEbaL|6)F1K4gB* zJlHbXl4eP_WWhm~TUJ|~misNoEGI1QT0XF}T7IZ9tf)xWDlHH$S@HD73MY7#LV9lFJE*b}-lx(NLc{XKe4zeB$Z?fpdG ztp8rW#IV&6WYikxqCw9XUB`{@8b2_$8}m%_P3ue>Oq)&HOy#DBO~mxL>6GbxlVDPs z?dFB%rREazgJzGJnD?7+ns1w9En_Xomg$xZaZnOVt)&Cb6>C*mldW0S+1AC@LhCx~ zVYu0=)+*~;)<$cSwb?3ITdi%@c58>V)5_SSwiK7`ZregQoyYd5?XR}8wi=AyZ*3ja zG(`x!uuM<+2zk6b0p}EIxn4d~&dJxwH_HDie*-r9M*f}LD-TzUQkWHXMY1AIF+=g9 z;#I{vifl#R+?m3>tcRZ~>!Rl8M>sm`ftRLSZ!YL|Mq`Yw$_lMAnMEzzvhtkrDL z?1yVrXg<<>rn#=^sU4`*YOUI2?P6`2c8B(qwpuIIjnUb488Gbz-AlSk-8&eHzv)>0 z0JzmSIMsCh-THg=>+}!npVGgeuhze(Z-Ti6eXG7r-;M|vZWw47Y8Yu4Ye;~%84XE> zG()CgiOX=W;UU9EhJP4-L|E);3^AIFD-am38k>#7Om~|Wnu<*iAQFCWYB&9A8UnYo z!K@ptJFL5`hpf+8zqQ8O7TAh0T%WVOW;WJzkRW)7=f2JCsPEae=W_1RJ?qirWo>9M~K7j#Thj=Hb zzgM@b8BH&Z0)yD1NzvSe*tc49pT>oG@hrt$>uBA^;ZLH9AF%5j5ba%s*UN!JY$jZapP;o)5cn(>zXm%WHY6hW|*=~ zi%pzqmC0ptn?8WSdz$x{51OAfA2XjdpErBW6D%t&FIvu6ZdiV`7_6^Z2iXd3C#j?E zg1M1ACx1!)lH!D-TG6bKD-Fsi$~DUSl{KpE>bKNCs|RRiV2IAu&ecD!e^Y-M-qE7p zV|d(UIBYN(lZ{!%^_W_Y8T**RO;M(3(`eHq)1#)hOo4+Y+-9>e2Yr<}6&n z#dgKh3MH!3sjR97Ok|C!CRH=0Ax14#%hVz2FttW)QNO2dRF`PJ(Zp)y+EKc3y8Cp; zb(eH5z3YlzZCGYlYj7DJG3+(GjL27G_{{K)?K|4C3LG3EiBpbOPF20CI;A?JeOo(S zpQ&G}e@OqT*p5U@-RW@9dFCQShYoX^Wu9e~mza>4YMcx~F-G1;9xfjxpCH%DC(F|?+vj1vUnE~DzZX%$E%(TY{AtYl zwet7n4f0RrP4cf1G1}$7$t8+jiZI0>g)3SyR*|SMA$Uwv%u>uz+@rV`Lt~5LVFgj_ zhiP9|oKXZR`zRxnLou%cache.hashval); + printf("Access chunk %d (%x)\n",vbn,fcb->cache.hashval); #endif if (vbn < 1 || vbn > fcb->hiblock) return SS$_ENDOFFILE; blocks = (vbn - 1) / VIOC_CHUNKSIZE * VIOC_CHUNKSIZE; @@ -721,10 +721,6 @@ unsigned dismount(struct VCB * vcb) if (sts & 1) { cache_remove(&vcb->fcb->cache); while (vcb->dircache) cache_delete((struct CACHE *) vcb->dircache); -#ifdef DEBUG - printf("Post close\n"); - cachedump(); -#endif free(vcb); } } diff --git a/extracters/ods2/diskio.c b/extracters/ods2/diskio.c index 905b22a..0c56fa8 100644 --- a/extracters/ods2/diskio.c +++ b/extracters/ods2/diskio.c @@ -82,11 +82,12 @@ char *diskio_mapfile( const char *filename, int options ) { for( l = 0; l < 26; l++ ) { if( diskfiles[l] == NULL && L < 0) { #ifdef _WIN32 + char *pname; char dl[3] = { 'A', ':', '\0' }; dl[0] += l; if( ff < 0 ) ff = l; - if( driveFromLetter( dl ) == NULL) { + if( (pname = driveFromLetter( dl )) == NULL) { if( dl[0] >= 'C' ) { if( L < 0 ) L = l; @@ -94,7 +95,8 @@ char *diskio_mapfile( const char *filename, int options ) { if( ffa < 0 ) ffa = l; } - } + } else + free( pname ); #else L = l; #endif @@ -122,7 +124,11 @@ char *diskio_mapfile( const char *filename, int options ) { drives[L][3] = options; free(diskfiles[L]); diskfiles[L] = (char *) malloc( (l = strlen(filename) + 1) ); - snprintf( diskfiles[L], l, "%s", filename ); + if( diskfiles[L] == NULL ) { + perror( "malloc" ); + return NULL; + } + memcpy( diskfiles[L], filename, l ); printf( "%s assigned to %s\n", drives[L], diskfiles[L] ); @@ -160,6 +166,8 @@ int diskio_showdrives( void ) { } int diskio_unmapdrive( const char *drive ) { + if( drive[0] < 'A' || drive[0] > 'Z' ) + abort(); if( diskfiles[drive[0]-'A'] == NULL ) { return 0; } diff --git a/extracters/ods2/ods2.c b/extracters/ods2/ods2.c index cbbc967..9a8e52a 100644 --- a/extracters/ods2/ods2.c +++ b/extracters/ods2/ods2.c @@ -1573,42 +1573,71 @@ struct param moupars[] = { {"volumes", REQ, LIST, NOPA, { NULL, 0, 0, NOPA, NULL } }; +static int parselist( char ***items, size_t min, char *arg, const char *label ) { + size_t n = 0, i; + char **list = NULL; + + *items = NULL; + + while( *arg != '\0' ) { + char **nl; + + while( *arg == ' ' || *arg == '\t' ) + arg++; + if( *arg == '\0' ) + break; + + nl = (char **) realloc( list, (n < min? min +1: n +2) * sizeof( char * ) ); + if( nl == NULL ) { + free( list ); + printf( "%%ODS2-E-NOMEM, Not enough memory for %s\n", label ); + return -1; + } + list = nl; + + list[n++] = arg; + while( !(*arg == ',' || *arg == '\0') ) + arg++; + if( *arg == '\0' ) + break; + *arg++ = '\0'; + } + + if( list == NULL ) { + list = (char **) malloc( min + 1 ); + if( list == NULL ) { + printf( "%%ODS2-E-NOMEM, Not enough memory for %s\n", label ); + return -1; + } + } + for( i = n; i < min; i++ ) + list[i] = NULL; + + list[i] = NULL; + + *items = list; + return (int)n; +} unsigned domount(int argc,char *argv[],int qualc,char *qualv[]) { - char *dev = argv[1]; - char *lab = argv[2]; int sts = 1,devices = 0; - char *devs[100],*labs[100]; + char **devs = NULL, **labs = NULL; + int options; - options = checkquals(0,mouquals,qualc,qualv); + options = checkquals( 0, mouquals, qualc, qualv ); if( options == -1 ) return SS$_BADPARAM; UNUSED(argc); - memset( labs, 0, sizeof(labs) ); - memset( devs, 0, sizeof(devs) ); + if( (devices = parselist( &devs, 0, argv[1], "devices")) < 0 ) + return SS$_BADPARAM; + if( parselist( &labs, devices, argv[2], "labels") < 0 ) { + free( devs ); + return SS$_BADPARAM; + } - while (*lab != '\0') { - labs[devices++] = lab; - while (*lab != ',' && *lab != '\0') lab++; - if (*lab != '\0') { - *lab++ = '\0'; - } else { - break; - } - } - devices = 0; - while (*dev != '\0') { - devs[devices++] = dev; - while (*dev != ',' && *dev != '\0') dev++; - if (*dev != '\0') { - *dev++ = '\0'; - } else { - break; - } - } if (devices > 0) { struct VCB *vcb; #ifdef DISKIMAGE @@ -1617,8 +1646,11 @@ unsigned domount(int argc,char *argv[],int qualc,char *qualv[]) for( i = 0; i < (unsigned)devices; i++ ) { char *drive; drive = diskio_mapfile( devs[i], (options & mnt_write) != 0 ); - if( drive == NULL ) - return 0; + if( drive == NULL ) { + free( devs ); + free( labs ); + return SS$_DEVNOTMOUNT; + } devs[i] = drive; } #endif @@ -1651,6 +1683,9 @@ unsigned domount(int argc,char *argv[],int qualc,char *qualv[]) #endif } } + + free( devs ); + free( labs ); return sts; } diff --git a/extracters/ods2/phynt.c b/extracters/ods2/phynt.c index 3d00763..556d679 100644 --- a/extracters/ods2/phynt.c +++ b/extracters/ods2/phynt.c @@ -685,7 +685,7 @@ unsigned phyio_write(unsigned chan,unsigned block,unsigned length,char *buffer) if (transfer != sectblks * 512) { if (((sts = phy_getsect(chan,sectno)) & 1) == 0) break; } - memcpy(buffer,sectbuff + (offset * 512),transfer); + memcpy(sectbuff + (offset * 512),buffer,transfer); if (((sts = phy_putsect(chan,sectno)) & 1) == 0) break; buffer += transfer; length -= transfer; diff --git a/extracters/ods2/phyunix.c b/extracters/ods2/phyunix.c index b226f1b..f891b4b 100644 --- a/extracters/ods2/phyunix.c +++ b/extracters/ods2/phyunix.c @@ -95,7 +95,7 @@ unsigned phyio_read(unsigned handle,unsigned block,unsigned length,char *buffer) { off_t res; #ifdef DEBUG - printf("Phyio read block: %d into %x (%d bytes)\n",block,buffer,length); + printf("Phyio read block: %d into %p (%d bytes)\n",block,buffer,length); #endif read_count++; if ((res = lseek(handle,block*512,0)) < 0) { @@ -115,7 +115,7 @@ unsigned phyio_read(unsigned handle,unsigned block,unsigned length,char *buffer) unsigned phyio_write(unsigned handle,unsigned block,unsigned length,char *buffer) { #ifdef DEBUG - printf("Phyio write block: %d from %x (%d bytes)\n",block,buffer,length); + printf("Phyio write block: %d from %p (%d bytes)\n",block,buffer,length); #endif write_count++; if (lseek(handle,block*512,0) < 0) return SS$_PARITY;