Zero value transactions can send a message instead of a signature, using the transactions signatureMessageFragment.
However, as far as I understand the mechanism, only value, currentIndex, lastIndex, obsoleteTag, timestamp and address are part of the bundle hash.
What ensures the signatureMessageFragment can't be changed until a bundle is confirmed? Even if there is a tx including value in the bundle, which signs the bundle hash, how does this validate the tx carrying the message?