Ignore:
Timestamp:
2011-01-28T23:51:36Z (13 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4046c1ea, c8ca07e
Parents:
e68de30
Message:

Fixed: Do not crash on zero buffers

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci/uhci_struct/transfer_descriptor.c

    re68de30 r44d8853  
    2727        uhci_print_verbose("Creating device field: %x.\n", instance->device);
    2828
    29         instance->buffer_ptr = (uintptr_t)addr_to_phys(buffer);
     29        if (size) {
     30                instance->buffer_ptr = (uintptr_t)addr_to_phys(buffer);
    3031
    31         uhci_print_verbose("Creating buffer field: %p(%p).\n",
    32           buffer, instance->buffer_ptr);
     32                uhci_print_verbose("Creating buffer field: %p(%p).\n",
     33                        buffer, instance->buffer_ptr);
    3334
    34         char * buff = buffer;
     35                if (size >= 8) {
     36                        char * buff = buffer;
    3537
    36         uhci_print_verbose("Buffer dump(8B): %x %x %x %x %x %x %x %x.\n",
    37           buff[0], buff[1], buff[2], buff[3], buff[4], buff[5], buff[6], buff[7]);
     38                        uhci_print_verbose("Buffer dump(8B): %x %x %x %x %x %x %x %x.\n",
     39                                buff[0], buff[1], buff[2], buff[3], buff[4], buff[5], buff[6], buff[7]);
     40                }
     41        } else {
     42                instance->buffer_ptr = 0;
     43        }
    3844
    3945        instance->next_va = NULL;
    4046        instance->callback = NULL;
     47        uhci_print_info("Created a new TD.\n");
    4148}
    4249
     
    7481        callback_run(instance->callback,
    7582                convert_outcome(instance->status),
    76                 instance->status >> TD_STATUS_ACTLEN_POS & TD_STATUS_ACTLEN_MASK
     83                ((instance->status >> TD_STATUS_ACTLEN_POS) + 1) & TD_STATUS_ACTLEN_MASK
    7784        );
    7885}
Note: See TracChangeset for help on using the changeset viewer.