version 1.22, 2008/06/30 23:35:39 |
version 1.23, 2008/07/23 21:33:32 |
|
|
get_media_capabilities(int *cap) |
get_media_capabilities(int *cap) |
{ |
{ |
scsireq_t scr; |
scsireq_t scr; |
char buf[4096]; |
u_char buf[4096]; |
int error; |
int error; |
u_int32_t i, dsz; |
u_int32_t i, dsz; |
u_int16_t feature; |
u_int16_t feature; |
|
|
dsz += 4; /* total size of bufer for all features */ |
dsz += 4; /* total size of bufer for all features */ |
i = 8; |
i = 8; |
while (i <= dsz - 4) { |
while (i <= dsz - 4) { |
if (dsz - i < 4 + buf[i + 3]) |
if (dsz - i < (u_int32_t)buf[i + 3] + 4) |
break; /* partial feature descriptor */ |
break; /* partial feature descriptor */ |
feature = betoh16(*(u_int16_t *)(buf + i)); |
feature = betoh16(*(u_int16_t *)(buf + i)); |
|
|