+ void* write_data; + if (write_request->shared_mem_id == 0) { + write_data = write_request->data; + } else { + write_data = open_shared_memory(write_request->shared_mem_id); + } + + size_t result = typehandle->write(filehandle, write_request->blocksize, write_request->blockcount, write_data);
Hier dürfte aber noch ein zusätzlicher Patch nötig sein, um den möglichen Buffer Overflow zu beseitigen. ;-) Die Funktion benutzt data_size nämlich an keiner einzigen Stelle.