diff -ux Makefile mtx-1.2.9/mtxl.c mtx-1.2.9.works/mtxl.c --- mtx-1.2.9/mtxl.c Mon Jul 31 12:33:53 2000 +++ mtx-1.2.9.works/mtxl.c Sat Nov 25 16:47:45 2000 @@ -431,8 +431,10 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumChangerFD, RequestSense_T *RequestSense, Inquiry_T *inquiry_info, SCSI_Flags_T *flags) { ElementStatusDataHeader_T *ElementStatusDataHeader; ElementStatusPage_T *ElementStatusPage; + ElementStatusPage_T ESBuf; ElementStatus_T *ElementStatus; TransportElementDescriptor_T *TransportElementDescriptor; + TransportElementDescriptor_T TEBuf; unsigned char *DataBuffer; /* size of data... */ unsigned char *DataPointer; /* point into the databuffer; */ @@ -648,7 +651,8 @@ got_element_num++; #endif - ElementStatusPage = (ElementStatusPage_T *) DataPointer; + memcpy(&ESBuf, DataPointer, sizeof(ElementStatusPage_T)); + ElementStatusPage = &ESBuf; DataPointer += sizeof(ElementStatusPage_T); TransportElementDescriptorLength = BigEndian16(ElementStatusPage->ElementDescriptorLength); @@ -671,8 +675,8 @@ BigEndian24(ElementStatusPage->ByteCountOfDescriptorDataAvailable); while (BytesAvailable > 0) { - TransportElementDescriptor = - (TransportElementDescriptor_T *) DataPointer; + memcpy(&TEBuf, DataPointer, TransportElementDescriptorLength); + TransportElementDescriptor = &TEBuf; DataPointer += TransportElementDescriptorLength; BytesAvailable -= TransportElementDescriptorLength; ElementCount--;