It wasn't a war crime.
It was clearly an error.
I spent years in the CIC of a similar warship and was in fact in the Navy in a CIC at the very moment that the incident occurred.
IFF positively only tells you 2 things. Whether the vessel on the Radar is an allied ship or plane, or if it is not an allied ship or plane.
The problem is that IFF transponders are both programmable and portable. So squawking "airliner 124" tells the warship nothing, because in a war scenario it is entirely likely that some combatants will do so.
I was most shocked that the captain of the Vincennes was able to make a decision, frankly.