diff --git a/pkgs/tools/filesystems/fuse-7z-ng/default.nix b/pkgs/tools/filesystems/fuse-7z-ng/default.nix index d400891a2054..e7749f63a99e 100644 --- a/pkgs/tools/filesystems/fuse-7z-ng/default.nix +++ b/pkgs/tools/filesystems/fuse-7z-ng/default.nix @@ -14,6 +14,9 @@ stdenv.mkDerivation rec { # Drop unused pthread library. pthread_yield() # fails the configure. ./no-pthread.patch + # Zero-initialize unset fields of `struct fuse_operations` so that + # garbage values don't cause segfault. + ./zero-init-fuse-operations.patch ]; nativeBuildInputs = [ pkg-config makeWrapper autoconf automake ]; diff --git a/pkgs/tools/filesystems/fuse-7z-ng/zero-init-fuse-operations.patch b/pkgs/tools/filesystems/fuse-7z-ng/zero-init-fuse-operations.patch new file mode 100644 index 000000000000..c2d50308f248 --- /dev/null +++ b/pkgs/tools/filesystems/fuse-7z-ng/zero-init-fuse-operations.patch @@ -0,0 +1,12 @@ +Zero-initialize unset fields of `struct fuse_operations`. +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -195,7 +195,7 @@ main (int argc, char **argv) + mkdir(param.mountpoint, 0750); + } + +- struct fuse_operations fuse7z_oper; ++ struct fuse_operations fuse7z_oper = {0}; + fuse7z_oper.init = fuse7z_init; + fuse7z_oper.destroy = fuse7z_destroy; + fuse7z_oper.readdir = fuse7z_readdir;