友達にお土産を買ってくれました
(I) gave my friend a souvenir
I gave a souvenir to my friend
would be
私は友達にお土産を上げました。
My friend gave a souvenir to me
友達は(わたしに)お土産をくれました。
I received a souvenir from my friend
私は友達にお土産をもらいました。
It's all in the particles.
(akira-san's second example should be
友達
は お土産を買ってくれました。
My friend gave me the buying of a souvenir.
My friend bought a souvenir for me. )
ageru to give to equal or lower status.
morau to recieve from equal or lower status
kureru to give (to me) from equals or lower.
I can never kureru. Others kureru to me.
は marks the agent doing the action
に marks the recepient of the action
を marks the object
In a practical sense they are the same. I end up with a present.
But the agent is different in each case. And who takes which particle is different. And the focus is different.
If it's all about me, morau would be the choice.
If it's all about my friend, kureru would be the choice.
----
edit
if I'm repeating Brody-san it's because he posted while I was composing!
----