Salve, compilato questo programma C e ho generato l'esecutivo ma avviandolo mi da errore di segmentazione.
Ho effettuato il debug con valgrind e mi da errore su questa linea di codice strcpy (ctfilename, app_data.ct_path) dove app_data è una typedef struct di extern.h e ct_path è una sua variabile.
L'errore di valgrind è questo:
==27435== Invalid read of size 1
==27435== at 0x4840094: strcpy (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==27435== by 0x11CD49: GetColors (color.c:304)
==27435== by 0x10C0F7: main (main.c:162)
==27435== Address 0x0 is not stack'd, malloc'd or (recently) free'd

Qualcuno sa come posso rilsovere?

codice:
 [extern.h]
codice:
/* data srtructure for application resources */
typedef struct {
	char * seq_directory;
	char  * sequence_name;
	char * colortable;
	char * fltctable;
	char * difftable;
	char * bitmap_path;
	char  * ct_path;
	char * pbm_path;
	XColor lforeground;
	XColor cursorcolor;
} AppData, *AppDataPtr;

[color.c]
char ctfilename[256];
char ctname[30] ; /* name of colortable we want to read */
int len = strlen ("colortable");
int len1 = strlen ("endtable");
char s[80]; /* we assume the lenght of a line in the color
table file is<= 80*/
FILE *fid;
int ok =0;
int i;
Colormap cmap = DefaultColormapOfScreen (XtScreen (Toplevel));
Pixel temppix[2];


strcpy (ctname, app_data.colortable);
/*
* open the file and find the position where the color table we
* want read starts
*/
strcpy (ctfilename, app_data.ct_path); -------> Errore QUI
strcat (ctfilename, "ColorTable");
fid = fopen (ctfilename, "r");
if (fid == NULL) {
error ("GetColors: cannot open colortable file \n");
exit(1);
}

codice:
 [output valgrind]
codice:
Conditional jump or move depends on uninitialised value(s)
==27435==    at 0x483FFB8: __strlen_sse2 (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==27435==    by 0x11CD21: GetColors (color.c:303)
==27435==    by 0x10C0F7: main (main.c:162)
==27435==  Uninitialised value was created by a stack allocation
==27435==    at 0x11CCA1: GetColors (color.c:284)
==27435== 
==27435== Invalid read of size 1
==27435==    at 0x4840094: strcpy (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==27435==    by 0x11CD49: GetColors (color.c:304)
==27435==    by 0x10C0F7: main (main.c:162)
==27435==  Address 0x0 is not stack'd, malloc'd or (recently) free'd