Залип на ручнике. Как грамотно работать со структурами вида:
|type(16 bit)|length(16 bit)|data(length)|
нужно их читать, обрабатывать и в таком же виде писать обратно. Связный список городить что-то неохота. т.е. хвост структуры может быть до 64К байт(но обычно там от силы 100 байт).
делать unsigned char* data[65536] мне жаба не позволяет.