On flat shading it looks good, but on smooth displays incorrectly. With subdivision surface, it looks terrible!! How to fix it. There is my blender file: https://ufile.io/5qja2
Your Meshtopology is not made to be subdivided, because you have some n-gons (greater then 4 verts) that even make a kink. Because Subdivision Surface modifier operates on them as one face those ugly fragments show up.
on the screenshot you can see all n-gons, you can select them by "Select/Select All by trait/Faces by Sides/greater then 4".
I would recomend to fix your mesh and cut those n-gons to polys. Sometimes "Grid Fill" can help in those cases but it doesnt to magic.
Then there are addons like "F2" or "Smart Fill" that could help.
And also you could use the "Edge Split modifier" to solve the problem with sharp angles and "Smooth" turned on, but be carefull to put it last and not before a subdivision Surface modifier, because it splits your edges as its named and could produce some problems itself
To understand whats wrong you first need to understand what subdivider does.
Subdivider simply takes 3 vertices, and outputs the average of these 3 points, which in your case these are the points because your magazine lacks horizontal vertices https://gyazo.com/a39bbb69b08b39541eac0cda3077ec60
you need to have vertical vertices along your magazine and other places where it deforms, something like this: https://gyazo.com/4f41ac0fd74ee7850644daf9e7b975ed
and then add edge loops to sharpen corners.