Fix alignment of allocation in fuse_reply_create

When allocating as an array of char only alignment of 1 is guaranteed but
the structure needs an alignment of 8. Specify alignment explicitly
This commit is contained in:
Vladimir Serbinenko 2024-11-20 21:16:16 +03:00 committed by Bernd Schubert
parent 0e0f43b79b
commit 66a03d4e4b

View File

@ -23,6 +23,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <stddef.h> #include <stddef.h>
#include <stdalign.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <limits.h> #include <limits.h>
@ -446,7 +447,7 @@ int fuse_reply_entry(fuse_req_t req, const struct fuse_entry_param *e)
int fuse_reply_create(fuse_req_t req, const struct fuse_entry_param *e, int fuse_reply_create(fuse_req_t req, const struct fuse_entry_param *e,
const struct fuse_file_info *f) const struct fuse_file_info *f)
{ {
char buf[sizeof(struct fuse_entry_out) + sizeof(struct fuse_open_out)]; alignas(uint64_t) char buf[sizeof(struct fuse_entry_out) + sizeof(struct fuse_open_out)];
size_t entrysize = req->se->conn.proto_minor < 9 ? size_t entrysize = req->se->conn.proto_minor < 9 ?
FUSE_COMPAT_ENTRY_OUT_SIZE : sizeof(struct fuse_entry_out); FUSE_COMPAT_ENTRY_OUT_SIZE : sizeof(struct fuse_entry_out);
struct fuse_entry_out *earg = (struct fuse_entry_out *) buf; struct fuse_entry_out *earg = (struct fuse_entry_out *) buf;