diff options
author | Jeremy Allison <jra@samba.org> | 2006-01-12 22:17:54 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:06:05 -0500 |
commit | 33174847994128387a36a8103f147fe5a96c15fd (patch) | |
tree | 72ef01910bac6df965a9e0554c235bab145fa209 /source3/locking | |
parent | 80f2848260d5c9be70f4a037ca3ea5c5b6a76166 (diff) | |
download | samba-33174847994128387a36a8103f147fe5a96c15fd.tar.gz samba-33174847994128387a36a8103f147fe5a96c15fd.tar.bz2 samba-33174847994128387a36a8103f147fe5a96c15fd.zip |
r12877: Stop passing structs around in smb messages, instead
always linearize into little-endian. Should fix all
Solaris issues with this, plus provide a cleaner base
moving forward for cluster-aware Samba where smbd's
can communicate across different compilers/architectures
(eventually these message will have to go cross-machine).
Jeremy.
(This used to be commit d01824b78576a034428e1cef73868d1169057991)
Diffstat (limited to 'source3/locking')
-rw-r--r-- | source3/locking/locking.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/source3/locking/locking.c b/source3/locking/locking.c index 07377831b4..d9737895ba 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -662,10 +662,10 @@ BOOL rename_share_filename(struct share_mode_lock *lck, const char *servicepath, const char *newname) { - struct file_renamed_message *frm = NULL; size_t sp_len; size_t fn_len; size_t msg_len; + char *frm = NULL; int i; if (!lck) { @@ -694,20 +694,21 @@ BOOL rename_share_filename(struct share_mode_lock *lck, sp_len = strlen(lck->servicepath); fn_len = strlen(lck->filename); - msg_len = sizeof(*frm) + sp_len + 1 + fn_len + 1; + msg_len = MSG_FILE_RENAMED_MIN_SIZE + sp_len + 1 + fn_len + 1; /* Set up the name changed message. */ frm = TALLOC(lck, msg_len); if (!frm) { return False; } - frm->dev = lck->dev; - frm->inode = lck->ino; + + SDEV_T_VAL(frm,0,lck->dev); + SINO_T_VAL(frm,8,lck->ino); DEBUG(10,("rename_share_filename: msg_len = %d\n", msg_len )); - safe_strcpy(&frm->names[0], lck->servicepath, sp_len); - safe_strcpy(&frm->names[sp_len + 1], lck->filename, fn_len); + safe_strcpy(&frm[16], lck->servicepath, sp_len); + safe_strcpy(&frm[16 + sp_len + 1], lck->filename, fn_len); /* Send the messages. */ for (i=0; i<lck->num_share_modes; i++) { @@ -723,11 +724,13 @@ BOOL rename_share_filename(struct share_mode_lock *lck, DEBUG(10,("rename_share_filename: sending rename message to pid %u " "dev %x, inode %.0f sharepath %s newname %s\n", (unsigned int)procid_to_pid(&se->pid), - (unsigned int)frm->dev, (double)frm->inode, + (unsigned int)lck->dev, (double)lck->ino, lck->servicepath, lck->filename )); + become_root(); message_send_pid(se->pid, MSG_SMB_FILE_RENAME, frm, msg_len, True); + unbecome_root(); } return True; |