memset(list, '\0', num_share_modes * sizeof(struct smb_share_mode_entry));
- shares = (struct share_mode_entry *)(db_data.dptr + sizeof(struct share_mode_entry));
+ shares = (struct share_mode_entry *)(db_data.dptr + sizeof(struct locking_data));
list_num = 0;
for (i = 0; i < num_share_modes; i++) {
if (!db_data.dptr) {
/* We must create the entry. */
db_data.dptr = (uint8 *)malloc(
- (2*sizeof(struct share_mode_entry)) +
+ sizeof(struct locking_data) +
+ sizeof(struct share_mode_entry) +
strlen(sharepath) + 1 +
strlen(filename) + 1);
if (!db_data.dptr) {
ld->u.s.num_share_mode_entries = 1;
ld->u.s.delete_on_close = 0;
ld->u.s.delete_token_size = 0;
- shares = (struct share_mode_entry *)(db_data.dptr + sizeof(struct share_mode_entry));
+ shares = (struct share_mode_entry *)(db_data.dptr + sizeof(struct locking_data));
create_share_mode_entry(shares, new_entry);
- memcpy(db_data.dptr + 2*sizeof(struct share_mode_entry),
+ memcpy(db_data.dptr + sizeof(struct locking_data) + sizeof(struct share_mode_entry),
sharepath,
strlen(sharepath) + 1);
- memcpy(db_data.dptr + 2*sizeof(struct share_mode_entry) +
+ memcpy(db_data.dptr + sizeof(struct locking_data) + sizeof(struct share_mode_entry) +
strlen(sharepath) + 1,
filename,
strlen(filename) + 1);
- db_data.dsize = 2*sizeof(struct share_mode_entry) +
+ db_data.dsize = sizeof(struct locking_data) + sizeof(struct share_mode_entry) +
strlen(sharepath) + 1 +
strlen(filename) + 1;
if (tdb_store(db_ctx->smb_tdb, locking_key, db_data, TDB_INSERT) == -1) {
orig_num_share_modes = ld->u.s.num_share_mode_entries;
/* Copy the original data. */
- memcpy(new_data_p, db_data.dptr, (orig_num_share_modes+1)*sizeof(struct share_mode_entry));
+ memcpy(new_data_p, db_data.dptr, sizeof(struct locking_data) + (orig_num_share_modes * sizeof(struct share_mode_entry)));
/* Add in the new share mode */
- shares = (struct share_mode_entry *)(new_data_p +
- ((orig_num_share_modes+1)*sizeof(struct share_mode_entry)));
+ shares = (struct share_mode_entry *)(new_data_p + sizeof(struct locking_data) +
+ (orig_num_share_modes * sizeof(struct share_mode_entry)));
create_share_mode_entry(shares, new_entry);
ld->u.s.num_share_mode_entries++;
/* Append the original delete_token and filenames. */
- memcpy(new_data_p + ((ld->u.s.num_share_mode_entries+1)*sizeof(struct share_mode_entry)),
- db_data.dptr + ((orig_num_share_modes+1)*sizeof(struct share_mode_entry)),
- db_data.dsize - ((orig_num_share_modes+1) * sizeof(struct share_mode_entry)));
+ memcpy(new_data_p + sizeof(struct locking_data) + (ld->u.s.num_share_mode_entries * sizeof(struct share_mode_entry)),
+ db_data.dptr + sizeof(struct locking_data) + (orig_num_share_modes * sizeof(struct share_mode_entry)),
+ db_data.dsize - sizeof(struct locking_data) - (orig_num_share_modes * sizeof(struct share_mode_entry)));
new_data_size = db_data.dsize + sizeof(struct share_mode_entry);
ld = (struct locking_data *)db_data.dptr;
orig_num_share_modes = ld->u.s.num_share_mode_entries;
- shares = (struct share_mode_entry *)(db_data.dptr + sizeof(struct share_mode_entry));
+ shares = (struct share_mode_entry *)(db_data.dptr + sizeof(struct locking_data));
if (orig_num_share_modes == 1) {
/* Only one entry - better be ours... */
}
/* Copy the header. */
- memcpy(new_data_p, db_data.dptr, sizeof(struct share_mode_entry));
+ memcpy(new_data_p, db_data.dptr, sizeof(struct locking_data));
num_share_modes = 0;
for (i = 0; i < orig_num_share_modes; i++) {
continue; /* This is our delete taget. */
}
- memcpy(new_data_p + ((num_share_modes+1)*sizeof(struct share_mode_entry)),
+ memcpy(new_data_p + sizeof(struct locking_data) +
+ (num_share_modes * sizeof(struct share_mode_entry)),
share, sizeof(struct share_mode_entry) );
num_share_modes++;
}
/* Copy any delete token plus the terminating filenames. */
- remaining_ptr = db_data.dptr + ((orig_num_share_modes+1) * sizeof(struct share_mode_entry));
+ remaining_ptr = db_data.dptr + sizeof(struct locking_data) + (orig_num_share_modes * sizeof(struct share_mode_entry));
remaining_size = db_data.dsize - (remaining_ptr - db_data.dptr);
- memcpy(new_data_p + ((num_share_modes+1)*sizeof(struct share_mode_entry)),
+ memcpy(new_data_p + sizeof(struct locking_data) + (num_share_modes * sizeof(struct share_mode_entry)),
remaining_ptr,
remaining_size);
ld = (struct locking_data *)db_data.dptr;
ld->u.s.num_share_mode_entries = num_share_modes;
- db_data.dsize = ((num_share_modes+1)*sizeof(struct share_mode_entry)) + remaining_size;
+ db_data.dsize = sizeof(struct locking_data) + (num_share_modes * sizeof(struct share_mode_entry)) + remaining_size;
if (tdb_store(db_ctx->smb_tdb, locking_key, db_data, TDB_REPLACE) == -1) {
free(db_data.dptr);
ld = (struct locking_data *)db_data.dptr;
num_share_modes = ld->u.s.num_share_mode_entries;
- shares = (struct share_mode_entry *)(db_data.dptr + sizeof(struct share_mode_entry));
+ shares = (struct share_mode_entry *)(db_data.dptr + sizeof(struct locking_data));
for (i = 0; i < num_share_modes; i++) {
struct share_mode_entry *share = &shares[i];