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....