From 4377475cacc16dc9c83c9b310f4c9bd0e7a0702e Mon Sep 17 00:00:00 2001 From: Patrick Caulfield Date: Fri, 18 May 2007 07:28:36 +0000 Subject: [PATCH] This patch fixes the marshalling of lock names in libSaLck, they were copied using memcpy, but the alignment of a mar_name_t is not necessarily the same as SaNameT. This patch changes memcpy() to marshall_to_mar_name_t(). git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1373 fd59a12c-fef9-0310-b244-a6a79926bd2f --- lib/lck.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/lck.c b/lib/lck.c index 5bd0b131..5bd627fd 100644 --- a/lib/lck.c +++ b/lib/lck.c @@ -654,9 +654,9 @@ saLckResourceOpen ( req_lib_lck_resourceopen.header.size = sizeof (struct req_lib_lck_resourceopen); req_lib_lck_resourceopen.header.id = MESSAGE_REQ_LCK_RESOURCEOPEN; - memcpy (&req_lib_lck_resourceopen.lockResourceName, lockResourceName, sizeof (SaNameT)); + marshall_to_mar_name_t (&req_lib_lck_resourceopen.lockResourceName, lockResourceName); - memcpy (&lckResourceInstance->lockResourceName, lockResourceName, sizeof (SaNameT)); + memcpy (&lckResourceInstance->lockResourceName, lockResourceName, sizeof(SaNameT)); req_lib_lck_resourceopen.resourceOpenFlags = resourceOpenFlags; req_lib_lck_resourceopen.resourceHandle = *lckResourceHandle; req_lib_lck_resourceopen.async_call = 0; @@ -793,8 +793,8 @@ saLckResourceClose ( req_lib_lck_resourceclose.header.size = sizeof (struct req_lib_lck_resourceclose); req_lib_lck_resourceclose.header.id = MESSAGE_REQ_LCK_RESOURCECLOSE; - memcpy (&req_lib_lck_resourceclose.lockResourceName, - &lckResourceInstance->lockResourceName, sizeof (SaNameT)); + marshall_to_mar_name_t (&req_lib_lck_resourceclose.lockResourceName, + &lckResourceInstance->lockResourceName); req_lib_lck_resourceclose.resourceHandle = lckResourceHandle; pthread_mutex_lock (lckResourceInstance->response_mutex); @@ -861,8 +861,8 @@ saLckResourceLock ( req_lib_lck_resourcelock.header.size = sizeof (struct req_lib_lck_resourcelock); req_lib_lck_resourcelock.header.id = MESSAGE_REQ_LCK_RESOURCELOCK; - memcpy (&req_lib_lck_resourcelock.lockResourceName, - &lckResourceInstance->lockResourceName, sizeof (SaNameT)); + marshall_to_mar_name_t (&req_lib_lck_resourcelock.lockResourceName, + &lckResourceInstance->lockResourceName); req_lib_lck_resourcelock.lockMode = lockMode; req_lib_lck_resourcelock.lockFlags = lockFlags; req_lib_lck_resourcelock.waiterSignal = waiterSignal; @@ -954,8 +954,8 @@ saLckResourceLockAsync ( req_lib_lck_resourcelock.header.size = sizeof (struct req_lib_lck_resourcelock); req_lib_lck_resourcelock.header.id = MESSAGE_REQ_LCK_RESOURCELOCKASYNC; - memcpy (&req_lib_lck_resourcelock.lockResourceName, - &lckResourceInstance->lockResourceName, sizeof (SaNameT)); + marshall_to_mar_name_t (&req_lib_lck_resourcelock.lockResourceName, + &lckResourceInstance->lockResourceName); req_lib_lck_resourcelock.lockMode = lockMode; req_lib_lck_resourcelock.lockFlags = lockFlags; req_lib_lck_resourcelock.waiterSignal = waiterSignal; @@ -1024,8 +1024,8 @@ saLckResourceUnlock ( return (error); } - memcpy (&req_lib_lck_resourceunlock.lockResourceName, - &lckResourceInstance->lockResourceName, sizeof (SaNameT)); + marshall_to_mar_name_t (&req_lib_lck_resourceunlock.lockResourceName, + &lckResourceInstance->lockResourceName); saHandleInstancePut (&lckResourceHandleDatabase, lckLockIdInstance->lckResourceHandle); @@ -1082,8 +1082,8 @@ saLckResourceUnlockAsync ( return (error); } - memcpy (&req_lib_lck_resourceunlock.lockResourceName, - &lckResourceInstance->lockResourceName, sizeof (SaNameT)); + marshall_to_mar_name_t (&req_lib_lck_resourceunlock.lockResourceName, + &lckResourceInstance->lockResourceName); saHandleInstancePut (&lckResourceHandleDatabase, lckLockIdInstance->lckResourceHandle); @@ -1130,8 +1130,8 @@ saLckLockPurge ( req_lib_lck_lockpurge.header.size = sizeof (struct req_lib_lck_lockpurge); req_lib_lck_lockpurge.header.id = MESSAGE_REQ_LCK_LOCKPURGE; - memcpy (&req_lib_lck_lockpurge.lockResourceName, - &lckResourceInstance->lockResourceName, sizeof (SaNameT)); + marshall_to_mar_name_t (&req_lib_lck_lockpurge.lockResourceName, + &lckResourceInstance->lockResourceName); pthread_mutex_lock (lckResourceInstance->response_mutex);