Search code examples
cbackupbus-error

Bus Error: 10 in C


My code compiles just fine but when I run it I get bus error: 10

void backupf(char *namelist, char *dirname)
{  
char    *in_filename;
char    *out_filename;
char    line[MAXPATHLEN];

FILE    *filenames = fopen(namelist, "r");

if(filenames == NULL) 
    {
        fprintf(stderr, "Cannot Open File\n");
        exit(EXIT_FAILURE);
    }
while( fgets(line, sizeof line, filenames) != NULL )
    {
    sprintf(in_filename, "./%s\n", line);
    sprintf(out_filename, "%s/%s\n", dirname, line);
    }
    backup(dirname, in_filename, out_filename);
fclose(filenames);
}

It's supposed to take a text file argument with a list of file names and then use that information to back it up to a backup directory using a backup function I've written.


Solution

  • You don't allocate space for the file names; you should. You're writing over indeterminate memory. This would probably work better:

    void backupf(char *namelist, char *dirname)
    {  
        char  in_filename[MAXPATHLEN];
        char  out_filename[MAXPATHLEN];
        char  line[MAXPATHLEN]; 
        FILE *filenames = fopen(namelist, "r");
    
        if (filenames == NULL) 
        {
            fprintf(stderr, "Cannot Open File\n");
            exit(EXIT_FAILURE);
        }
        while (fgets(line, sizeof(line), filenames) != NULL)
        {
            snprintf(in_filename, sizeof(in_filename)"./%s\n", line);
            snprintf(out_filename, sizeof(out_filename), "%s/%s\n", dirname, line);
            backup(dirname, in_filename, out_filename);
        }
        fclose(filenames);
    }