Ignore:
Timestamp:
Aug 7, 2008, 11:49:04 AM (17 years ago)
Author:
Paul Smedley
Message:

Update trunk to 3.2.1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/samba/source/locking/locking.c

    r137 r141  
    494494static bool parse_share_modes(TDB_DATA dbuf, struct share_mode_lock *lck)
    495495{
    496         struct locking_data *data;
     496        struct locking_data data;
    497497        int i;
    498498
     
    501501        }
    502502
    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;
    509509
    510510        DEBUG(10, ("parse_share_modes: delete_on_close: %d, owrt: %s, "
     
    516516                              convert_timespec_to_time_t(
    517517                                      lck->changed_write_time)),
    518                    (unsigned int)data->u.s.delete_token_size,
     518                   (unsigned int)data.u.s.delete_token_size,
    519519                   lck->num_share_modes));
    520520
     
    536536                                 
    537537                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),
    539540                                      lck->num_share_modes *
    540541                                      sizeof(struct share_mode_entry));
     
    546547
    547548        /* 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) +
    550551                                (lck->num_share_modes *
    551552                                sizeof(struct share_mode_entry));
    552553
    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) {
    555556                        DEBUG(0, ("parse_share_modes: invalid token size %d\n",
    556                                 data->u.s.delete_token_size));
     557                                data.u.s.delete_token_size));
    557558                        smb_panic("parse_share_modes: invalid token size");
    558559                }
     
    570571
    571572                /* 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 -
    574575                                                (sizeof(uid_t) + sizeof(gid_t)))/sizeof(gid_t)) : 0;
    575576
     
    593594
    594595        /* 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) +
    596597                (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) +
    600601                (lck->num_share_modes * sizeof(struct share_mode_entry)) +
    601                 data->u.s.delete_token_size +
     602                data.u.s.delete_token_size +
    602603                strlen(lck->servicepath) + 1;
    603604
Note: See TracChangeset for help on using the changeset viewer.