From 3f43dd87101a4faaa6a417428db7fff2f258b4d3 Mon Sep 17 00:00:00 2001 From: hyche Date: Sat, 16 Dec 2017 03:45:30 +0700 Subject: [PATCH] btrfs: Fix btrfs_dir_entry doesn't read data from disk correctly. --- src/add-ons/kernel/file_systems/btrfs/btrfs.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/file_systems/btrfs/btrfs.h b/src/add-ons/kernel/file_systems/btrfs/btrfs.h index 3d0e7bfbc1..9320e20430 100644 --- a/src/add-ons/kernel/file_systems/btrfs/btrfs.h +++ b/src/add-ons/kernel/file_systems/btrfs/btrfs.h @@ -356,8 +356,8 @@ struct btrfs_dir_entry { uint16 data_length; uint16 name_length; uint8 type; - uint8* name; - uint8* data; // attribute data + uint8 name[]; + // if attribute data exists, it goes here uint16 DataLength() const { return B_LENDIAN_TO_HOST_INT16(data_length); } uint16 NameLength() const { return B_LENDIAN_TO_HOST_INT16(name_length); } ino_t InodeID() const { return location.ObjectID(); } @@ -369,7 +369,7 @@ struct btrfs_dir_entry { { data_length = B_HOST_TO_LENDIAN_INT16(dataLength); if (data != NULL) - memcpy(this->data, data, dataLength); + memcpy(&name[name_length], data, dataLength); } void SetName(const char* name, uint16 nameLength) {