Example of a free double vulnerability in C

I hope this is the right forum to ask the question I have:
We are currently discussing double-freedom vulnerabilities in our software security class, so I know that the code provided below is supposed to be an example of how a double freedom can be exploited. Now, I am trying to understand this example and I hope that someone here can help me with this.

The first thing that is done in this code is a definition of a struc structure. We use this structure defining a pointer to said structure:
struct auth * auth;

In agreement. I think a vulnerability can only be where malloc or free Has been used. But what could be exploited in this specific code? I do not see it Remembrance of the class that the problem with the application free the same pointer is twice, that now the pointer forwards and backwards of the fragment is pointing to this same piece in which they are stored themselves. That's where my knowledge ends up.

I would love to find someone here, who can help!

Code to discuss