Nothing wrong with the dog, unless it is a complete basket case. The dog needs to know who is in charge, this is not achieved by beating the thing to death. It needs to be corrected in a firm, consistent manner each and every time. It's not just when it goes for other dogs it needs correcting, it needs educating that it is not in charge. Your mate is pack leader not the little jack, the dog has got it into it's head it is pack leader and with it comes the responsibility of protecting it's "pack".
It needs to be a dedicated training programme but it will be worth it. Doing little things like not letting the dog go through doors first, make it clear to it that it is not first, do not let it eat it's food until your mate says so, do not let it walk in front of you when it is on the lead, do not let it stop when it wants to. It is not so much a case of training as psychology, get the poor dogs head right first then get the training sorted. You have to remember the pack thing, and in a clearly defined pack hierarchy a dog takes it's place and lives quite happily within it. The signals that your friend is giving out to his dog are obviously confusing it and the poor wee thing thinks the situation needs sorting out by taking control.
But remember the keyword is firmness not brutality, if it needs restraining restrain it, there is no need to hit it.
John