diff --git a/libports/src/lib/libc_terminal/plugin.cc b/libports/src/lib/libc_terminal/plugin.cc index 12add6c1b..6811e8664 100644 --- a/libports/src/lib/libc_terminal/plugin.cc +++ b/libports/src/lib/libc_terminal/plugin.cc @@ -162,7 +162,10 @@ namespace { * This is important, i.e., to convince the gdbserver code to * cooperate with us. */ - if (buf) buf->st_mode = S_IFCHR; + if (buf) { + Genode::memset(buf, 0, sizeof(struct stat)); + buf->st_mode = S_IFCHR; + } return 0; } diff --git a/ports/src/noux/fs_file_system.h b/ports/src/noux/fs_file_system.h index 7c17dcd20..ef3cdf1fc 100644 --- a/ports/src/noux/fs_file_system.h +++ b/ports/src/noux/fs_file_system.h @@ -189,6 +189,8 @@ namespace Noux { return false; } + memset(&sysio->stat_out.st, 0, sizeof(sysio->stat_out.st)); + sysio->stat_out.st.size = status.size; sysio->stat_out.st.mode = Sysio::STAT_MODE_FILE | 0777; diff --git a/ports/src/noux/tar_file_system.h b/ports/src/noux/tar_file_system.h index fa4aaf56e..ac7833bfd 100644 --- a/ports/src/noux/tar_file_system.h +++ b/ports/src/noux/tar_file_system.h @@ -344,11 +344,12 @@ namespace Noux { PDBG("unhandled record type %d", record->type()); } - sysio->stat_out.st.mode = mode; - sysio->stat_out.st.size = record->size(); - sysio->stat_out.st.uid = record->uid(); - sysio->stat_out.st.gid = record->gid(); - sysio->stat_out.st.inode = (unsigned long)record; + memset(&sysio->stat_out.st, 0, sizeof(sysio->stat_out.st)); + sysio->stat_out.st.mode = mode; + sysio->stat_out.st.size = record->size(); + sysio->stat_out.st.uid = record->uid(); + sysio->stat_out.st.gid = record->gid(); + sysio->stat_out.st.inode = (unsigned long)record; return true; }