[Gluster-devel] [PATCH BUG:493] Remove pointer casting (copy data to proper memory before using it). Fixes bug #493.
Hraban Luyat
hraban at 0brg.net
Sun Dec 20 08:36:13 UTC 2009
Hello,
See bug #493 for more information on this patch.
http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=493#c2
This patch assumes that the scope of disk_layout is local wherever it is
used. Seems correct, not really checked, though.
Greetings,
Hraban Luyat
Signed-off-by: Hraban Luyat <hraban at 0brg.net>
---
xlators/cluster/dht/src/dht-layout.c | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/xlators/cluster/dht/src/dht-layout.c b/xlators/cluster/dht/src/dht-layout.c
index 4b7b44f..2646f31 100644
--- a/xlators/cluster/dht/src/dht-layout.c
+++ b/xlators/cluster/dht/src/dht-layout.c
@@ -315,7 +315,8 @@ dht_layout_merge (xlator_t *this, dht_layout_t *layout, xlator_t *subvol,
int i = 0;
int ret = -1;
int err = -1;
- int32_t *disk_layout = NULL;
+ int32_t disk_layout[4];
+ void *disk_layout_raw = NULL;
if (op_ret != 0) {
@@ -338,7 +339,8 @@ dht_layout_merge (xlator_t *this, dht_layout_t *layout, xlator_t *subvol,
if (xattr) {
/* during lookup and not mkdir */
ret = dict_get_ptr (xattr, "trusted.glusterfs.dht",
- VOID(&disk_layout));
+ &disk_layout_raw);
+ memcpy (disk_layout, disk_layout_raw, sizeof(disk_layout));
}
if (ret != 0) {
@@ -606,7 +608,8 @@ dht_layout_dir_mismatch (xlator_t *this, dht_layout_t *layout, xlator_t *subvol,
int ret = 0;
int err = 0;
int dict_ret = 0;
- int32_t *disk_layout = NULL;
+ int32_t disk_layout[4];
+ void *disk_layout_raw = NULL;
int32_t count = -1;
uint32_t start_off = -1;
uint32_t stop_off = -1;
@@ -640,7 +643,8 @@ dht_layout_dir_mismatch (xlator_t *this, dht_layout_t *layout, xlator_t *subvol,
}
dict_ret = dict_get_ptr (xattr, "trusted.glusterfs.dht",
- VOID(&disk_layout));
+ &disk_layout_raw);
+ memcpy (disk_layout, disk_layout_raw, sizeof(disk_layout));
if (dict_ret < 0) {
if (err == 0) {
--
1.6.5
More information about the Gluster-devel
mailing list