big-endian fixes (zhanglinbao, yuval, szaka)

master N2006_11_07_011225
szaka 2006-11-06 23:17:08 +00:00
parent 387728c1e7
commit 342e2d7af6
1 changed files with 18 additions and 17 deletions

View File

@ -362,9 +362,9 @@ static INDEX_ENTRY *ntfs_ie_dup(INDEX_ENTRY *ie)
ntfs_log_trace("Entering\n");
dup = ntfs_malloc(ie->length);
dup = ntfs_malloc(le16_to_cpu(ie->length));
if (dup)
memcpy(dup, ie, ie->length);
memcpy(dup, ie, le16_to_cpu(ie->length));
return dup;
}
@ -372,7 +372,7 @@ static INDEX_ENTRY *ntfs_ie_dup(INDEX_ENTRY *ie)
static INDEX_ENTRY *ntfs_ie_dup_novcn(INDEX_ENTRY *ie)
{
INDEX_ENTRY *dup;
int size = ie->length;
int size = le16_to_cpu(ie->length);
ntfs_log_trace("Entering\n");
@ -383,7 +383,7 @@ static INDEX_ENTRY *ntfs_ie_dup_novcn(INDEX_ENTRY *ie)
if (dup) {
memcpy(dup, ie, size);
dup->ie_flags &= ~INDEX_ENTRY_NODE;
dup->length = size;
dup->length = cpu_to_le16(size);
}
return dup;
}
@ -784,13 +784,13 @@ done:
}
static INDEX_BLOCK *ntfs_ib_alloc(VCN ib_vcn, int ib_size,
static INDEX_BLOCK *ntfs_ib_alloc(VCN ib_vcn, u32 ib_size,
INDEX_HEADER_FLAGS node_type)
{
INDEX_BLOCK *ib;
int ih_size = sizeof(INDEX_HEADER);
ntfs_log_trace("Entering ib_vcn = %lld ib_size = %d\n", ib_vcn, ib_size);
ntfs_log_trace("Entering ib_vcn = %lld ib_size = %u\n", ib_vcn, ib_size);
ib = ntfs_calloc(ib_size);
if (!ib)
@ -981,7 +981,7 @@ static INDEX_BLOCK *ntfs_ir_to_ib(INDEX_ROOT *ir, VCN ib_vcn)
ntfs_log_trace("Entering\n");
ib = ntfs_ib_alloc(ib_vcn, ir->index_block_size, LEAF_NODE);
ib = ntfs_ib_alloc(ib_vcn, le32_to_cpu(ir->index_block_size), LEAF_NODE);
if (!ib)
return NULL;
@ -1066,10 +1066,10 @@ static int ntfs_ib_cut_tail(ntfs_index_context *icx, INDEX_BLOCK *src,
if (ie_last->ie_flags & INDEX_ENTRY_NODE)
ntfs_ie_set_vcn(ie_last, ntfs_ie_get_vcn(ie));
memcpy(ie, ie_last, ie_last->length);
memcpy(ie, ie_last, le16_to_cpu(ie_last->length));
src->index.index_length = cpu_to_le32(((char *)ie - ies_start) +
ie->length + le32_to_cpu(src->index.entries_offset));
le16_to_cpu(ie->length) + le32_to_cpu(src->index.entries_offset));
if (ntfs_ib_write(icx, icx->parent_vcn[icx->pindex + 1], src))
return STATUS_ERROR;
@ -1237,8 +1237,8 @@ static int ntfs_ie_add_vcn(INDEX_ENTRY **ie)
{
INDEX_ENTRY *p, *old = *ie;
old->length += sizeof(VCN);
p = realloc(old, old->length);
old->length = cpu_to_le16(le16_to_cpu(old->length) + sizeof(VCN));
p = realloc(old, le16_to_cpu(old->length));
if (!p)
return STATUS_ERROR;
@ -1297,7 +1297,8 @@ static int ntfs_ir_insert_median(ntfs_index_context *icx, INDEX_ENTRY *median,
ntfs_log_trace("Entering\n");
new_size = le32_to_cpu(icx->ir->index.index_length) + median->length;
new_size = le32_to_cpu(icx->ir->index.index_length) +
le16_to_cpu(median->length);
if (!(median->ie_flags & INDEX_ENTRY_NODE))
new_size += sizeof(VCN);
@ -1336,7 +1337,7 @@ static int ntfs_ib_insert(ntfs_index_context *icx, INDEX_ENTRY *ie, VCN new_vcn)
idx_size = le32_to_cpu(ib->index.index_length);
allocated_size = le32_to_cpu(ib->index.allocated_size);
/* FIXME: sizeof(VCN) should be included only if ie has no VCN */
if (idx_size + ie->length + sizeof(VCN) > allocated_size) {
if (idx_size + le16_to_cpu(ie->length) + sizeof(VCN) > allocated_size) {
err = ntfs_ib_split(icx, ib);
if (err == STATUS_OK)
err = STATUS_KEEP_SEARCHING;
@ -1545,9 +1546,9 @@ static void ntfs_ir_leafify(ntfs_index_context *icx, INDEX_HEADER *ih)
ie = ntfs_ie_get_first(ih);
ie->ie_flags &= ~INDEX_ENTRY_NODE;
ie->length -= sizeof(VCN);
ie->length = cpu_to_le16(le16_to_cpu(ie->length) - sizeof(VCN));
ih->index_length -= sizeof(VCN);
ih->index_length = cpu_to_le32(le32_to_cpu(ih->index_length) - sizeof(VCN));
ih->ih_flags &= ~LARGE_INDEX;
/* Not fatal error */
@ -1691,7 +1692,7 @@ descend:
else
ih = &icx->ib->index;
delta = ie->length - icx->entry->length;
delta = le16_to_cpu(ie->length) - le16_to_cpu(icx->entry->length);
new_size = le32_to_cpu(ih->index_length) + delta;
if (delta > 0) {
if (icx->is_in_root) {
@ -1704,7 +1705,7 @@ descend:
ih = &icx->ir->index;
entry = ntfs_ie_get_by_pos(ih, entry_pos);
} else if (new_size > ih->allocated_size) {
} else if (new_size > le32_to_cpu(ih->allocated_size)) {
errno = EOPNOTSUPP;
ntfs_log_perror("Denied to split INDEX BLOCK during entry removal");
goto out2;