I noticed my pets weren't attacking critters that attacked me, so I made a small change to attack.cpp (highlighted below).
Code:
// Agro the client's pet if it has one.
if (other->IsClient())
{
// TODO: When NPC's charm - pet might become client, not NPC -- Soveraign
NPC * client_pet = (NPC *) other->GetPet();
if (client_pet)
{
client_pet->AddToHateList(this);
}
}