I've been working on this for a few days now, and I'm seriously stuck on this function. For this part, I'm supposed to read in a file and create a linked list from the data in the file. I have my program reading in the files, no problem. What I am running into is when it tries to insert the data into the list, the program just crashes. Can someone maybe explain what I am doing wrong?

Here is the code to load the file (it is in my main):

Code:
else if(choice == 5)
        {
          printf("Enter load file name.\n");
          scanf("%s", &name2); 
          
          fload = fopen(name2, "r");
          
          while(!feof(fload))
          {
                fscanf(fload, "%s %s %d %s %s", make, model, &year, color, license);
                printf("%s %s %d %s %s \n", make, model, year, color, license);  //To make sure the file is being read properly                
                if(insert(&head, make, model, year, color, license))
                {
                    printf("file loaded\n");
                }
          }
          
          printf("File loaded!\n");
          
          fclose(fload);
        }


And here is my insert function (which will work with the rest of the program):

Code:
int insert(struct vehicle** head, char* make, char* model, int year, char* color, char* license)
{
    struct vehicle* newvehicle;
    struct vehicle* crnt = (*head);
    
    newvehicle = malloc(sizeof(struct vehicle));
    newvehicle->make = (char*)calloc(strlen(make)+1, sizeof(char));
    newvehicle->model = (char*)calloc(strlen(model)+1, sizeof(char));
    newvehicle->color = (char*)calloc(strlen(color)+1, sizeof(char));
    newvehicle->license = (char*)calloc(strlen(license)+1, sizeof(char));
    
    strcpy(newvehicle->make,make);
    strcpy(newvehicle->model,model);
    newvehicle->year = year;
    strcpy(newvehicle->color,color);
    strcpy(newvehicle->license,license);
    
    
    
    if ((*head) == NULL || (strcmp((*head)->license , license) > 0))
    {
        newvehicle->next = (*head);
        (*head) = newvehicle;
        return 1;
    }
    
    
    while(crnt->next != NULL && (strcmp(crnt->next->license , license) < 0))
    {
        crnt = crnt->next;
    }
    
    if(strcmp(crnt->next->license, license) == 0)
        return 0;
    
    
    newvehicle->next = crnt->next;
    crnt->next = newvehicle;
    return 1;
}