@@ -1594,29 +1594,38 @@ OFDataArray *data; size_t length; length = [self UTF8StringLength]; - if (length <= 15) { - uint8_t tmp = 0xB0 | ((uint8_t)length & 0xF); + if (length <= 31) { + uint8_t tmp = 0xA0 | ((uint8_t)length & 0x1F); data = [OFDataArray dataArrayWithItemSize: 1 capacity: length + 1]; + [data addItem: &tmp]; + } else if (length <= UINT8_MAX) { + uint8_t type = 0xD6; + uint8_t tmp = (uint8_t)length; + + data = [OFDataArray dataArrayWithItemSize: 1 + capacity: length + 2]; + + [data addItem: &type]; [data addItem: &tmp]; } else if (length <= UINT16_MAX) { - uint8_t type = 0xD8; + uint8_t type = 0xD7; uint16_t tmp = OF_BSWAP16_IF_LE((uint16_t)length); data = [OFDataArray dataArrayWithItemSize: 1 capacity: length + 3]; [data addItem: &type]; [data addItems: &tmp count: sizeof(tmp)]; } else if (length <= UINT32_MAX) { - uint8_t type = 0xD9; + uint8_t type = 0xD8; uint32_t tmp = OF_BSWAP32_IF_LE((uint32_t)length); data = [OFDataArray dataArrayWithItemSize: 1 capacity: length + 5];