Merge pull request #66 from bonzini/master
scsi-lowlevel: do not use unsafe pointer casts
This commit is contained in:
@@ -212,10 +212,10 @@ scsi_get_uint64(const unsigned char *c)
|
|||||||
{
|
{
|
||||||
uint64_t val;
|
uint64_t val;
|
||||||
|
|
||||||
val = ntohl(*(uint32_t *)c);
|
val = scsi_get_uint32(c);
|
||||||
val <<= 32;
|
val <<= 32;
|
||||||
c += 4;
|
c += 4;
|
||||||
val |= ntohl(*(uint32_t *)c);
|
val |= scsi_get_uint32(c);
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
@@ -223,13 +223,21 @@ scsi_get_uint64(const unsigned char *c)
|
|||||||
inline uint32_t
|
inline uint32_t
|
||||||
scsi_get_uint32(const unsigned char *c)
|
scsi_get_uint32(const unsigned char *c)
|
||||||
{
|
{
|
||||||
return ntohl(*(uint32_t *)c);
|
uint32_t val;
|
||||||
|
val = c[0];
|
||||||
|
val = (val << 8) | c[1];
|
||||||
|
val = (val << 8) | c[2];
|
||||||
|
val = (val << 8) | c[3];
|
||||||
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline uint16_t
|
inline uint16_t
|
||||||
scsi_get_uint16(const unsigned char *c)
|
scsi_get_uint16(const unsigned char *c)
|
||||||
{
|
{
|
||||||
return ntohs(*(uint16_t *)c);
|
uint16_t val;
|
||||||
|
val = c[0];
|
||||||
|
val = (val << 8) | c[1];
|
||||||
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint64_t
|
static inline uint64_t
|
||||||
@@ -237,14 +245,8 @@ task_get_uint64(struct scsi_task *task, int offset)
|
|||||||
{
|
{
|
||||||
if (offset <= task->datain.size - 8) {
|
if (offset <= task->datain.size - 8) {
|
||||||
const unsigned char *c = &task->datain.data[offset];
|
const unsigned char *c = &task->datain.data[offset];
|
||||||
uint64_t val;
|
|
||||||
|
|
||||||
val = ntohl(*(uint32_t *)c);
|
return scsi_get_uint64(c);
|
||||||
val <<= 32;
|
|
||||||
c += 4;
|
|
||||||
val |= ntohl(*(uint32_t *)c);
|
|
||||||
|
|
||||||
return val;
|
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -256,7 +258,7 @@ task_get_uint32(struct scsi_task *task, int offset)
|
|||||||
if (offset <= task->datain.size - 4) {
|
if (offset <= task->datain.size - 4) {
|
||||||
const unsigned char *c = &task->datain.data[offset];
|
const unsigned char *c = &task->datain.data[offset];
|
||||||
|
|
||||||
return ntohl(*(uint32_t *)c);
|
return scsi_get_uint32(c);
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -268,7 +270,7 @@ task_get_uint16(struct scsi_task *task, int offset)
|
|||||||
if (offset <= task->datain.size - 2) {
|
if (offset <= task->datain.size - 2) {
|
||||||
const unsigned char *c = &task->datain.data[offset];
|
const unsigned char *c = &task->datain.data[offset];
|
||||||
|
|
||||||
return ntohs(*(uint16_t *)c);
|
return scsi_get_uint16(c);
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -300,13 +302,17 @@ scsi_set_uint64(unsigned char *c, uint64_t v)
|
|||||||
inline void
|
inline void
|
||||||
scsi_set_uint32(unsigned char *c, uint32_t val)
|
scsi_set_uint32(unsigned char *c, uint32_t val)
|
||||||
{
|
{
|
||||||
*(uint32_t *)c = htonl(val);
|
c[0] = val >> 24;
|
||||||
|
c[1] = val >> 16;
|
||||||
|
c[2] = val >> 8;
|
||||||
|
c[3] = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
scsi_set_uint16(unsigned char *c, uint16_t val)
|
scsi_set_uint16(unsigned char *c, uint16_t val)
|
||||||
{
|
{
|
||||||
*(uint16_t *)c = htons(val);
|
c[0] = val >> 8;
|
||||||
|
c[1] = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user