In TivaWare 2.1.2.111, the file example/peripherals/can/simple_tx.c has the following code
uint32_t ui32MsgData;
uint8_t *pui8MsgData;
pui8MsgData = (uint8_t *)&ui32MsgData;
. . . .
//
// Initialize the message object that will be used for sending CAN
// messages. The message will be 4 bytes that will contain an incrementing
// value. Initially it will be set to 0.
//
ui32MsgData = 0;
sCANMessage.ui32MsgID = 1;
sCANMessage.ui32MsgIDMask = 0;
sCANMessage.ui32Flags = MSG_OBJ_TX_INT_ENABLE;
sCANMessage.ui32MsgLen = sizeof(pui8MsgData);
sCANMessage.pui8MsgData = pui8MsgData;
This line
sCANMessage.ui32MsgLen = sizeof(pui8MsgData);
should read
sCANMessage.ui32MsgLen = sizeof(ui32MsgData);
One is not specifying the length of the pointer pui8MsgData, but the length of the buffer it points to.
It just happens that both are the same, so the code works. But that's not what the code says.