Read standard Ifd from data buffer IFD Offset: 0x00000001, IFD Entries: 4 Entry Tag Format (Bytes each) Number Offset ----- ------ --------------------- ------ ----------- 0 0x0001 Ascii (1) 4 54 68 65 00 1 0x0002 Ascii (1) 6 0x00000036 2 0x0003 Ascii (1) 7 0x0000003c 3 0x0004 Ascii (1) 9 0x00000043 Next IFD: 0x00000000 Data of entry 1: 0037 4b 75 61 6c 61 00 Kuala. Data of entry 2: 003d 4c 75 6d 70 75 72 00 Lumpur. Data of entry 3: 0044 4d 61 6c 61 79 73 69 61 00 Malaysia. Setting value of entry 3... Wrote 76 characters to data buffer IFD Offset: 0x00000001, IFD Entries: 4 Entry Tag Format (Bytes each) Number Offset ----- ------ --------------------- ------ ----------- 0 0x0001 Ascii (1) 4 54 68 65 00 1 0x0002 Ascii (1) 6 0x00000036 2 0x0003 Ascii (1) 7 0x0000003c 3 0x0004 Ascii (1) 6 0x00000043 Next IFD: 0x00000000 Data of entry 1: 0037 4b 75 61 6c 61 00 Kuala. Data of entry 2: 003d 4c 75 6d 70 75 72 00 Lumpur. Data of entry 3: 0044 54 48 52 45 45 00 THREE. Read non-standard Ifd from data buffer IFD Offset: 0x00000016, IFD Entries: 4 Entry Tag Format (Bytes each) Number Offset ----- ------ --------------------- ------ ----------- 0 0x0001 Ascii (1) 4 54 68 65 00 1 0x0002 Ascii (1) 6 0xffffffea 2 0x0003 Ascii (1) 7 0xfffffff0 3 0x0004 Ascii (1) 9 0xfffffff7 Next IFD: 0x00000000 Data of entry 1: 0000 4b 75 61 6c 61 00 Kuala. Data of entry 2: 0006 4c 75 6d 70 75 72 00 Lumpur. Data of entry 3: 000d 4d 61 6c 61 79 73 69 61 00 Malaysia. Setting value of entry 3... IFD Offset: 0x00000016, IFD Entries: 4 Entry Tag Format (Bytes each) Number Offset ----- ------ --------------------- ------ ----------- 0 0x0001 Ascii (1) 4 54 68 65 00 1 0x0002 Ascii (1) 6 0xffffffea 2 0x0003 Ascii (1) 7 0xfffffff0 3 0x0004 Ascii (1) 6 0xfffffff7 Next IFD: 0x00000000 Data of entry 1: 0000 4b 75 61 6c 61 00 Kuala. Data of entry 2: 0006 4c 75 6d 70 75 72 00 Lumpur. Data of entry 3: 000d 54 48 52 45 45 00 00 00 00 THREE.... Test boundary checks, the following reads should generate warnings or errors --- read (3) Warning: Upper boundary of data for IFD0 entry 3 is out of bounds: Offset = 0x00000043, size = 9, exceeds buffer size by 1 Bytes; Truncating the data. --- read (4) Error: Upper boundary of the 1st data entry of IFD0 is out of bounds: Offset = 0x00000036, exceeds buffer size by 1 Bytes Ifd::read (4) failed, rc = 6 --- read (5) Warning: Upper boundary of data for IFD0 entry 2 is out of bounds: Offset = 0x0000003c, size = 7, exceeds buffer size by 7 Bytes; Truncating the data. Warning: Upper boundary of data for IFD0 entry 3 is out of bounds: Offset = 0x00000043, size = 9, exceeds buffer size by 16 Bytes; Truncating the data. --- read (6) Error: IFD0 memory of the pointer to the next IFD lies outside of the IFD memory buffer. Ifd::read (6) failed, rc = 6 --- read (7) Error: IFD0 memory of the pointer to the next IFD lies outside of the IFD memory buffer. Ifd::read (7) failed, rc = 6 Create Ifd from scratch IFD Offset: 0x00000000, IFD Entries: 4 Entry Tag Format (Bytes each) Number Offset ----- ------ --------------------- ------ ----------- 0 0x0001 Ascii (1) 4 54 68 65 00 1 0x0002 Ascii (1) 6 0x00000036 2 0x0003 Ascii (1) 7 0x0000003c 3 0x0004 Ascii (1) 9 0x00000043 Next IFD: 0x00000000 Data of entry 1: 0036 4b 75 61 6c 61 00 Kuala. Data of entry 2: 003c 4c 75 6d 70 75 72 00 Lumpur. Data of entry 3: 0043 4d 61 6c 61 79 73 69 61 00 Malaysia. Move data buffer IFD Offset: 0x00000001, IFD Entries: 4 Entry Tag Format (Bytes each) Number Offset ----- ------ --------------------- ------ ----------- 0 0x0001 Ascii (1) 4 54 68 65 00 1 0x0002 Ascii (1) 6 0x00000036 2 0x0003 Ascii (1) 7 0x0000003c 3 0x0004 Ascii (1) 9 0x00000043 Next IFD: 0x00000000 Data of entry 1: 0037 4b 75 61 6c 61 00 Kuala. Data of entry 2: 003d 4c 75 6d 70 75 72 00 Lumpur. Data of entry 3: 0044 54 48 52 45 45 00 00 00 00 THREE.... IFD Offset: 0x00000001, IFD Entries: 4 Entry Tag Format (Bytes each) Number Offset ----- ------ --------------------- ------ ----------- 0 0x0001 Ascii (1) 4 54 68 65 00 1 0x0002 Ascii (1) 6 0x00000036 2 0x0003 Ascii (1) 7 0x0000003c 3 0x0004 Ascii (1) 9 0x00000043 Next IFD: 0x00000000 Data of entry 1: 0037 4b 75 61 6c 61 00 Kuala. Data of entry 2: 003d 4c 75 6d 70 75 72 00 Lumpur. Data of entry 3: 0044 54 48 52 45 45 00 00 00 00 THREE....