I confirm the patch is correct.
As of Apple TechNote 1150 at http://developer.apple.com/library/mac/#technotes/tn/tn1150.html the wrapper address is at byte 0x07c.
vol is declared as UInt16 and so the offset advanced two bytes each step, then correct offset is 0x3e in 16-bit words.
El 10/08/2011, a las 16:41, William Hahne escribió:
On Wed, Aug 10, 2011 at 5:56 AM, Mark Cave-Ayland mark.cave-ayland@siriusit.co.uk wrote: On 09/08/11 22:54, William Hahne wrote:
The code for checking for a wrapped HFS+ volume looks at the wrong offset.
Index: fs/hfsplus/hfsp_volume.c
--- fs/hfsplus/hfsp_volume.c (revision 1041) +++ fs/hfsplus/hfsp_volume.c (working copy) @@ -302,7 +302,7 @@ os_read(fd, vol, 2, HFSP_BLOCKSZ_BITS); if (__be16_to_cpu(vol[0]) == HFS_VOLHEAD_SIG &&
- __be16_to_cpu(vol[0x7c]) == HFSP_VOLHEAD_SIG) {
- __be16_to_cpu(vol[0x3e]) == HFSP_VOLHEAD_SIG) {
ret = -1; } else if (__be16_to_cpu(vol[0]) == HFSP_VOLHEAD_SIG) { ret = -1;
Same comment as for patch 2/10.
Actually I think this one is not contrary to the specification but is just a mix up between a 8bit and 16bit array. The original value seems to assume that vol is an array of 8bit integers while it is an array of 16bit integers. If you notice the corrected value is half of the original value. I can look up the documentation but it seems unnecessary in this case.
ATB,
Mark.
-- Mark Cave-Ayland - Senior Technical Architect PostgreSQL - PostGIS Sirius Corporation plc - control through freedom http://www.siriusit.co.uk t: +44 870 608 0063
Sirius Labs: http://www.siriusit.co.uk/labs
-- OpenBIOS http://openbios.org/ Mailinglist: http://lists.openbios.org/mailman/listinfo Free your System - May the Forth be with you
William Hahne
-- OpenBIOS http://openbios.org/ Mailinglist: http://lists.openbios.org/mailman/listinfo Free your System - May the Forth be with you