From zziplib Debian source package --- a/zzip/zip.c 2007-03-19 02:27:49.000000000 +1100 +++ b/zzip/zip.c 2007-11-07 17:40:52.985849197 +1100 @@ -402,7 +402,10 @@ uint16_t u_extras, u_comment, u_namlen; if (fd_map) - { d = (void*)(fd_map+zz_fd_gap+zz_offset); } /* fd_map+fd_gap==u_rootseek */ + { + d = &dirent; + memcpy(d, fd_map+zz_fd_gap+zz_offset, sizeof(*d)); /* fd_map+fd_gap==u_rootseek */ + } else { if (io->fd.seeks(fd, zz_rootseek+zz_offset, SEEK_SET) < 0)