A data definition like:
byte dataPacket [4]; // 0-4 --> 5 bytes
specifies the number of elements you want for the array, not index positions. Your definition asks for 4 elements when you really need 5. Change the definition to:
byte dataPacket [5]; // 0-4 --> 5 bytes