On Thu, Apr 04, 2013 at 11:19:52PM +0000, Steven Hartland wrote:
> New Revision: 249115
> URL: http://svnweb.freebsd.org/changeset/base/249115
> 
> Log:
>   Adds security options to camcontrol this includes the ability to secure
>   erase disks such as SSD's
>   
>   Adds the ability to run ATA commands via the SCSI ATA Pass-Through(16)
>   com[m]and
> 
> Modified: head/sbin/camcontrol/camcontrol.c
>  
> [...]
> +static int
> +ata_do_identify(struct cam_device *device, int retry_count, int timeout,
> +             union ccb *ccb, struct ata_params** ident_bufp)
> +{
> [...]
> +
> +     error = ata_do_28bit_cmd(device,
> +                              ccb,
> +                              /*retries*/retry_count,
> +                              /*flags*/CAM_DIR_IN,
> +                              /*protocol*/AP_PROTO_PIO_IN,
> +                              /*tag_action*/MSG_SIMPLE_Q_TAG,
> +                              /*command*/command,
> +                              /*features*/0,
> +                              /*lba*/0,
> +                              /*sector_count*/(u_int8_t)sizeof(struct 
> ata_params),

This looks strange: sizeof(struct ata_params) is 512, but it is too wide
for u_int8_t, so it would be truncated to zero.  Should it be 1 (one) here
instead for ATA_ATA_IDENTIFY command, since it normally returns some data
which typically fits one sector (>=512 bytes)?

> +                              /*data_ptr*/(u_int8_t *)ptr,
> +                              /*dxfer_len*/sizeof(struct ata_params),
> +                              /*timeout*/timeout ? timeout : 30 * 1000,
> +                              /*quiet*/1);
>  
> [...]
> +             error = ata_do_28bit_cmd(device,
> +                                      ccb,
> +                                      /*retries*/retry_count,
> +                                      /*flags*/CAM_DIR_IN,
> +                                      /*protocol*/AP_PROTO_PIO_IN,
> +                                      /*tag_action*/MSG_SIMPLE_Q_TAG,
> +                                      /*command*/retry_command,
> +                                      /*features*/0,
> +                                      /*lba*/0,
> +                                      /*sector_count*/(u_int8_t)
> +                                          sizeof(struct ata_params),

Same here.

> +                                      /*data_ptr*/(u_int8_t *)ptr,
> +                                      /*dxfer_len*/sizeof(struct ata_params),
> +                                      /*timeout*/timeout ? timeout : 30 * 
> 1000,
> +                                      /*quiet*/0);

./danfe
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to