I was trying to free memory for a linked list iteratively. The list has a struct which looks like this, and in this linked list, I don't add a url if it's in this list.
struct Node {
    char *url;
    struct Node *next;
};
Once done working with this linked list, I tried to free it, but got segmentation fault, I'm still in the way of learning c, I haven't got much clue of how to debugging such error other than directly searching for related topics. Referenced a few SOs this one, this one  and this one, still cannot figure out where it got crashed.
Here's my code. Free feel to add comments if you think anything I missed in this implementation.
void url_push(struct Node *head, const char *url, size_t url_size) {
    struct Node *new_node = (struct Node *) malloc(sizeof(struct Node));
    new_node->url = malloc(url_size);
    new_node->next = NULL;
    for (int i = 0; i < url_size; i++)
        *(new_node->url + i) = *(url + i);
    struct Node *current = head;
    while(1) {
        if (strcmp(current->url, new_node->url) == 0) {
            printf("Seen page %s!!!!!\n", new_node->url);
            free(new_node);
            break;
        } else if (current->next == NULL) {
            current->next = new_node;
            break;
        } else {
            current = current->next;
        }
    }
}
int main() {
    struct Node *head = (struct Node*)malloc(sizeof(struct Node));
    head->url = "/";
    head->next = NULL;
    char *url = "www.google.com";
    url_push(head, url, strlen(url));
    url = "www.yahoo.com";
    url_push(head, url, strlen(url));
    url = "www.google.com";
    url_push(head, url, strlen(url));
    url = "www.wsj.com";
    url_push(head, url, strlen(url));
    struct Node *current = NULL;
    while ((current = head) != NULL) {
        printf("url: %s\n", head->url);
        head = head->next;
        free(current->url);
        free(current);
    }
}
Edited:
To reduce the confusions, I revised the struct. The purpose of using strcmp is to avoid adding a url that already seen.
 
     
    