Hey guys,
I'm getting a stupid segmentation fault on a piece of code.

My .h is the following :

Code:
typedef struct sFicheiro{
    char *ficheiro;
    int nbits;
    struct sFicheiro *proximo;
} Node, *Ficheiro;


typedef struct Ficheiros {
    int numFicheiros;
    Ficheiro lista;
} NFicheiros;


NFicheiros cria(void);
NFicheiros insereFicheiro(char *ficheiro, NFicheiros aux);
void showLib(NFicheiros lib);
And my .c is as following :

Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "array.h"


NFicheiros cria (void)
{
NFicheiros aux;
aux.numFicheiros=0;
aux.lista=NULL;
return aux;
}


NFicheiros insereFicheiro(char *ficheiro, NFicheiros aux) {
printf("1\n");
	Ficheiro novo = (Ficheiro*)malloc(sizeof (Node));
printf("2\n");
	novo->ficheiro=(char*)malloc(sizeof(ficheiro)+1);
printf("3\n");	
	novo->nbits= read(ficheiro,stdin,strlen(ficheiro));
	novo->proximo=NULL;
	novo->ficheiro=strdup(ficheiro);
printf("4\n");
	aux.lista->ficheiro=strdup(ficheiro);
printf("5\n");
	if (aux.numFicheiros == 0)
	{
printf("5\n");
		//aux=(NFicheiros)malloc(sizeof(NFicheiros));
		aux.numFicheiros=1;
		aux.lista=novo;
printf("6\n");		
		return aux;
	}
	else
	{
		novo->proximo=aux.lista;
		aux.lista=novo;
		return aux;
	}
	
}




void showLib(NFicheiros aux)
{
	int j = 0;
	if(aux.numFicheiros == 0) printf("Não existem ficheiros a ser monitorizados.\n");
	else
	{
	while (aux.lista!=NULL) 
	{
	printf("%s",aux.lista->ficheiro);
	aux.lista->proximo;
	}
	}
}


int main ()
{
NFicheiros aux;
aux = cria();
aux=insereFicheiro("ola",aux);
//showLib(aux);
printf("%d \n",aux.numFicheiros);
}
And the output is :

Code:
1
2
3
4
Falha de segmentação
Why am I getting an error here :

aux.lista->ficheiro=strdup(ficheiro);

?

Thanks a lot.