bool Archive::Open(const wchar *Name,uint Mode)
{
#ifdef USE_QOPEN
  // Important if we reuse Archive object and it has virtual QOpen
  // file position not matching real. For example, for 'l -v volname'.
  QOpen.Unload();
#endif

#ifdef USE_ARCMEM
  if (Cmd->ArcInMem)
  {
    wcsncpyz(FileName,Name,ASIZE(FileName));
    ArcMem.Load(Cmd->ArcMemData,Cmd->ArcMemSize);
    Cmd->SetArcInMem(NULL,0); // Return in memory data for first volume only, not for next volumes.
    return true;
  }
#endif

  return File::Open(Name,Mode);
}
The software writes data past the end, or before the beginning, of the intended buffer.