Changeset 141 for trunk/samba/source/locking
- Timestamp:
- Aug 7, 2008, 11:49:04 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/samba/source/locking/locking.c
r137 r141 494 494 static bool parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck) 495 495 { 496 struct locking_data *data;496 struct locking_data data; 497 497 int i; 498 498 … … 501 501 } 502 502 503 data = (struct locking_data *)dbuf.dptr;504 505 lck->delete_on_close = data ->u.s.delete_on_close;506 lck->old_write_time = data ->u.s.old_write_time;507 lck->changed_write_time = data ->u.s.changed_write_time;508 lck->num_share_modes = data ->u.s.num_share_mode_entries;503 memcpy(&data, dbuf.dptr, sizeof(data)); 504 505 lck->delete_on_close = data.u.s.delete_on_close; 506 lck->old_write_time = data.u.s.old_write_time; 507 lck->changed_write_time = data.u.s.changed_write_time; 508 lck->num_share_modes = data.u.s.num_share_mode_entries; 509 509 510 510 DEBUG(10, ("parse_share_modes: delete_on_close: %d, owrt: %s, " … … 516 516 convert_timespec_to_time_t( 517 517 lck->changed_write_time)), 518 (unsigned int)data ->u.s.delete_token_size,518 (unsigned int)data.u.s.delete_token_size, 519 519 lck->num_share_modes)); 520 520 … … 536 536 537 537 lck->share_modes = (struct share_mode_entry *) 538 TALLOC_MEMDUP(lck, dbuf.dptr+sizeof(*data), 538 TALLOC_MEMDUP(lck, 539 dbuf.dptr+sizeof(struct locking_data), 539 540 lck->num_share_modes * 540 541 sizeof(struct share_mode_entry)); … … 546 547 547 548 /* Get any delete token. */ 548 if (data ->u.s.delete_token_size) {549 uint8 *p = dbuf.dptr + sizeof( *data) +549 if (data.u.s.delete_token_size) { 550 uint8 *p = dbuf.dptr + sizeof(struct locking_data) + 550 551 (lck->num_share_modes * 551 552 sizeof(struct share_mode_entry)); 552 553 553 if ((data ->u.s.delete_token_size < sizeof(uid_t) + sizeof(gid_t)) ||554 ((data ->u.s.delete_token_size - sizeof(uid_t)) % sizeof(gid_t)) != 0) {554 if ((data.u.s.delete_token_size < sizeof(uid_t) + sizeof(gid_t)) || 555 ((data.u.s.delete_token_size - sizeof(uid_t)) % sizeof(gid_t)) != 0) { 555 556 DEBUG(0, ("parse_share_modes: invalid token size %d\n", 556 data ->u.s.delete_token_size));557 data.u.s.delete_token_size)); 557 558 smb_panic("parse_share_modes: invalid token size"); 558 559 } … … 570 571 571 572 /* Any supplementary groups ? */ 572 lck->delete_token->ngroups = (data ->u.s.delete_token_size > (sizeof(uid_t) + sizeof(gid_t))) ?573 ((data ->u.s.delete_token_size -573 lck->delete_token->ngroups = (data.u.s.delete_token_size > (sizeof(uid_t) + sizeof(gid_t))) ? 574 ((data.u.s.delete_token_size - 574 575 (sizeof(uid_t) + sizeof(gid_t)))/sizeof(gid_t)) : 0; 575 576 … … 593 594 594 595 /* Save off the associated service path and filename. */ 595 lck->servicepath = (const char *)dbuf.dptr + sizeof( *data) +596 lck->servicepath = (const char *)dbuf.dptr + sizeof(struct locking_data) + 596 597 (lck->num_share_modes * sizeof(struct share_mode_entry)) + 597 data ->u.s.delete_token_size;598 599 lck->filename = (const char *)dbuf.dptr + sizeof( *data) +598 data.u.s.delete_token_size; 599 600 lck->filename = (const char *)dbuf.dptr + sizeof(struct locking_data) + 600 601 (lck->num_share_modes * sizeof(struct share_mode_entry)) + 601 data ->u.s.delete_token_size +602 data.u.s.delete_token_size + 602 603 strlen(lck->servicepath) + 1; 603 604
Note:
See TracChangeset
for help on using the changeset viewer.