what is wrong with the memory allocations
typedef struct user {
    char name[MAX_NAME];
    char profile_pic[MAX_NAME];  // This is a *filename*, not the file contents.
    struct post *first_post;
    struct user *friends[MAX_FRIENDS];
    struct user *next;
} User;

User *new_node = calloc(1, sizeof(User));
new_node->name = calloc(1, sizeof(char) * MAX_NAME);
new_node->profile_pic = calloc(1, sizeof(char) * MAX_NAME);
new_node->first_post = calloc(1, sizeof(Post));
new_node->friends = calloc(32, sizeof(User *));
for(int i = 0; i < MAX_FRIENDS; i++){
    (new_node->friends)[i] = calloc(1, sizeof(User));
}
new_node->next = calloc(1, sizeof(User));