Changeset 1644 in MondoRescue for branches/2.2.5/mondo/src/common


Ignore:
Timestamp:
Sep 23, 2007, 2:41:29 AM (17 years ago)
Author:
Bruno Cornec
Message:

Apply patch from Andree Leidenfrost, modified a bit to use bkpinfo->tmpdir instead of /tmp
or MINDI_CACHE when appropriate. Fix security issues in mondo
Thanks al ot Andree for catching all those issues.
Will not compile needs more work as bkpinfo->tmpdir isn't available everywhere
Should become a global in 3.x when only containing pointers.

Location:
branches/2.2.5/mondo/src/common
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.5/mondo/src/common/libmondo-archive.c

    r1614 r1644  
    14741474    }
    14751475/* if not Debian then go ahead & use fdformat */
    1476     strcpy(tempfile,
    1477            call_program_and_get_last_line_of_output
    1478            ("mktemp -q /tmp/mondo.XXXXXXXX"));
     1476    sprintf(tempfile, "%s/mondo.floppy.log", bkpinfo->tmpdir);
    14791477    sprintf(command, "%s >> %s 2>> %s; rm -f %s", cmd, tempfile, tempfile,
    14801478            tempfile);
     
    31953193    }
    31963194    log_to_screen("Scanning CD-ROM drive...");
    3197     sprintf(mtpt, "/tmp/cd.mtpt.%ld.%ld", (long int) random(),
    3198             (long int) random());
     3195    sprintf(mtpt, "%s/cd.mtpt", bkpinfo->tmpdir);
    31993196    make_hole_for_dir(mtpt);
    32003197
     
    39593956        log_msg(2,
    39603957                "Not verifying again. Per-CD/ISO verification already carried out.");
    3961         paranoid_system
    3962             ("cat /tmp/changed.files.* > /tmp/changed.files 2> /dev/null");
     3958        sprintf(tmp, "cat %s/changed.files > %s/changed.files 2> /dev/null",bkpinfo->tmpdir, MINDI_CACHE);
     3959        paranoid_system(tmp);
    39633960    } else {
    39643961        g_current_media_number = cdno;
     
    39963993*/
    39973994        sprintf(tmp,
    3998                 "grep 'afio: ' %s | sed 's/afio: //' | grep -vE '^/dev/.*$' >> /tmp/changed.files",
    3999                 MONDO_LOGFILE);
     3995                "grep 'afio: ' %s | sed 's/afio: //' | grep -vE '^/dev/.*$' >> %s/changed.files",
     3996                MONDO_LOGFILE, MINDI_CACHE);
    40003997        system(tmp);
    40013998
    40023999        sprintf(tmp,
    4003                 "grep 'star: ' %s | sed 's/star: //' | grep -vE '^/dev/.*$' >> /tmp/changed.files",
    4004                 MONDO_LOGFILE);
     4000                "grep 'star: ' %s | sed 's/star: //' | grep -vE '^/dev/.*$' >> %s/changed.files",
     4001                MONDO_LOGFILE, MINDI_CACHE);
    40054002        system(tmp);
    40064003        run_program_and_log_output("umount " MNT_CDROM, FALSE);
     
    40104007//}
    40114008    }
    4012     diffs = count_lines_in_file("/tmp/changed.files");
     4009    sprintf(tmp, "%s/changed.files", MINDI_CACHE);
     4010    diffs = count_lines_in_file(tmp);
    40134011
    40144012    if (diffs > 0) {
  • branches/2.2.5/mondo/src/common/libmondo-devices.c

    r1575 r1644  
    855855    }
    856856
    857     sprintf(mountpoint, "/tmp/cd.%d", (int) (random() % 32767));
     857    sprintf(mountpoint, "%s/cd.mnt", bkpinfo->tmpdir);
    858858    make_hole_for_dir(mountpoint);
    859859
     
    17321732            run_program_and_log_output("umount " MNT_CDROM, 5);
    17331733        }
    1734         system("mkdir -p /tmp/isodir &> /dev/null");
     1734        sprintf(tmp, "mkdir -p %s/isodir &> /dev/null", bkpinfo->tmpdir);
     1735        system(tmp);
    17351736        sprintf(tmp, "%s/%s/%s-%d.iso", bkpinfo->isodir,
    17361737                bkpinfo->nfs_remote_dir, bkpinfo->prefix,
    17371738                cd_number_i_want);
    17381739        if (!does_file_exist(tmp)) {
    1739             sprintf(tmp, "/tmp/isodir/%s/%s-%d.iso",
     1740            sprintf(tmp, "%s/isodir/%s/%s-%d.iso", bkpinfo->tmpdir,
    17401741                    bkpinfo->nfs_remote_dir, bkpinfo->prefix,
    17411742                    cd_number_i_want);
    17421743            if (does_file_exist(tmp)) {
    17431744                log_msg(1,
    1744                         "FIXME - hacking bkpinfo->isodir from '%s' to /tmp/isodir",
    1745                         bkpinfo->isodir);
    1746                 strcpy(bkpinfo->isodir, "/tmp/isodir");
     1745                        "FIXME - hacking bkpinfo->isodir from '%s' to %s/isodir",
     1746                        bkpinfo->isodir, bkpinfo->tmpdir);
     1747                sprintf(bkpinfo->isodir, "%s/isodir", bkpinfo->tmpdir);
    17471748            }
    17481749        }
     
    21172118        }
    21182119        if (bkpinfo->disaster_recovery) {
    2119             system("umount /tmp/isodir 2> /dev/null");
     2120            sprintf(command ,"umount %s/isodir 2> /dev/null", bkpinfo->tmpdir);
     2121            system(command);
    21202122            if (!popup_and_get_string
    21212123                ("NFS share", "Which remote NFS share should I mount?",
     
    21262128        }
    21272129        if (!is_this_device_mounted(bkpinfo->nfs_mount)) {
    2128             sprintf(bkpinfo->isodir, "/tmp/isodir.mondo.%d",
    2129                     (int) (random() % 32768));
     2130            sprintf(bkpinfo->isodir, "%s/nfsdir", bkpinfo->tmpdir);
    21302131            sprintf(command, "mkdir -p %s", bkpinfo->isodir);
    21312132            run_program_and_log_output(command, 5);
  • branches/2.2.5/mondo/src/common/libmondo-filelist.c

    r1552 r1644  
    268268    malloc_string(tmp_fname);
    269269    malloc_string(command);
    270     sprintf(tmp_fname, "/tmp/sort.%d.%d.%d", (int) (random() % 32768),
    271             (int) (random() % 32768), (int) (random() % 32768));
     270    sprintf(tmp_fname, "%s/sortfile", bkpinfo->tmpdir);
    272271
    273272    if (!does_file_exist(orig_fname)) {
     
    683682    malloc_string(syscall_pin);
    684683    malloc_string(syscall_pout);
    685     sprintf(masklist, "/tmp/%d.%d.mask", (int) (random() % 32768),
    686             (int) (random() % 32768));
     684    sprintf(masklist, "%s/masklist", bkpinfo->tmpdir);
    687685    sprintf(command, "cp -f %s %s", orig_msklist, masklist);
    688686    run_program_and_log_output(command, 1);
  • branches/2.2.5/mondo/src/common/libmondo-fork.c

    r1316 r1644  
    339339        log_if_failure = TRUE;
    340340    }
    341     sprintf(callstr,
    342             "%s > /tmp/mondo-run-prog-thing.tmp 2> /tmp/mondo-run-prog-thing.err",
    343             program);
     341    sprintf(callstr, "%s > %s/mondo-run-prog-thing.tmp 2> %s/mondo-run-prog-thing.err",
     342             program, bkpinfo->tmpdir, bkpinfo->tmpdir);
    344343    while ((p = strchr(callstr, '\r'))) {
    345344        *p = ' ';
     
    368367                "--------------------------------start of output-----------------------------");
    369368    }
    370     if (log_if_failure
    371         &&
    372         system
    373         ("cat /tmp/mondo-run-prog-thing.err >> /tmp/mondo-run-prog-thing.tmp 2> /dev/null"))
    374     {
     369    sprintf(callstr, "cat %s/mondo-run-prog-thing.err >> %s/mondo-run-prog-thing.tmp 2> /dev/null", bkpinfo->tmpdir, bkpinfo->tmpdir);
     370    if (log_if_failure && system(callstr)) {
    375371        log_OS_error("Command failed");
    376372    }
    377     unlink("/tmp/mondo-run-prog-thing.err");
    378     fin = fopen("/tmp/mondo-run-prog-thing.tmp", "r");
     373    sprintf(tmp, "%s/mondo-run-prog-thing.err", bkpinfo->tmpdir);
     374    unlink(tmp);
     375    sprintf(tmp, "%s/mondo-run-prog-thing.tmp", bkpinfo->tmpdir);
     376    fin = fopen(tmp, "r");
    379377    if (fin) {
    380378        for (fgets(incoming, MAX_STR_LEN, fin); !feof(fin);
     
    397395        paranoid_fclose(fin);
    398396    }
    399     unlink("/tmp/mondo-run-prog-thing.tmp");
     397    unlink(tmp);
    400398    if ((res == 0 && log_if_success) || (res != 0 && log_if_failure)) {
    401399        log_msg(0,
     
    441439    assert_string_is_neither_NULL_nor_zerolength(basic_call);
    442440
    443     sprintf(lockfile, "/tmp/mojo-jojo.blah.XXXXXX");
    444     mkstemp(lockfile);
     441    sprintf(lockfile, "%s/mojo-jojo.bla.bla", bkpinfo->tmpdir);
     442
    445443    sprintf(command,
    446444            "echo hi > %s ; %s >> %s 2>> %s; res=$?; sleep 1; rm -f %s; exit $res",
     
    514512    char *tmp;
    515513    char *buf;
     514    char filestr[MAX_STR_LEN];
    516515    long int bytes_to_be_read, bytes_read_in, bytes_written_out =
    517516        0, bufcap, subsliceno = 0;
     
    614613            log_msg(5, "tmpB is %s", tmp);
    615614            if (!strstr(tmp, PIMP_END_SZ)) {
    616                 ftmp = fopen("/tmp/out.leftover", "w");
     615                sprintf(filestr, "%s/out.leftover", bkpinfo->tmpdir);
     616                ftmp = fopen(filestr, "w");
    617617                bytes_read_in = fread(tmp, 1, 64, fin);
    618618                log_msg(1, "bytes_read_in = %ld", bytes_read_in);
     
    693693
    694694    strcpy(title, tt);
    695     strcpy(tempfile,
    696            call_program_and_get_last_line_of_output
    697            ("mktemp -q /tmp/mondo.XXXXXXXX"));
     695    sprintf(tempfile, "%s/mondo.binperc", bkpinfo->tmpdir);
    698696    sprintf(command, "%s >> %s 2>> %s; rm -f %s", cmd, tempfile, tempfile,
    699697            tempfile);
  • branches/2.2.5/mondo/src/common/libmondo-tools.c

    r1437 r1644  
    999999    bkpinfo->scratchdir[0] = '\0';
    10001000    bkpinfo->make_filelist = TRUE;  // unless -J supplied to mondoarchive
    1001     sprintf(bkpinfo->tmpdir, "/tmp/tmpfs/mondo.tmp.%d", (int) (random() % 32768));  // for mondorestore
     1001    sprintf(bkpinfo->tmpdir, "%s/tmpfs/mondo.tmp.%d", "/tmp", (int) (random() % 32768));    // for mondorestore
    10021002    bkpinfo->optimal_set_size = 0;
    10031003    bkpinfo->backup_media_type = none;
     
    12271227        fatal_error("Please reinstall Mondo and Mindi.");
    12281228    }
    1229     if (run_program_and_log_output
    1230         ("mindi --makemountlist /tmp/mountlist.txt.test", 5)) {
    1231         log_to_screen
    1232             ("Mindi --makemountlist /tmp/mountlist.txt.test failed for some reason.");
     1229    sprintf(tmp, "mindi --makemountlist %s/mountlist.txt.test", bkpinfo->tmpdir);
     1230    if (run_program_and_log_output(tmp, 5)) {
     1231        sprintf(tmp, "mindi --makemountlist %s/mountlist.txt.test failed for some reason.", bkpinfo->tmpdir);
     1232        log_to_screen(tmp);
    12331233        log_to_screen
    12341234            ("Please run that command by hand and examine /var/log/mindi.log");
     
    14941494        return (1);
    14951495    }
    1496     strcpy(tempfile,
    1497            call_program_and_get_last_line_of_output
    1498            ("mktemp -q /tmp/mojo-jojo.blah.XXXXXX"));
     1496    sprintf(tempfile, "%s/mojo-jojo.blah", bkpinfo->tmpdir);
    14991497    if (does_file_exist(config_file)) {
    15001498        sprintf(command, "grep -vE '^%s .*$' %s > %s",
  • branches/2.2.5/mondo/src/common/libmondo-verify.c

    r1316 r1644  
    395395                            bkpinfo->restore_path,
    396396                            biggiestruct.filename);
    397                 asprintf(&tmp, "echo \"%s/%s not found\" >> /tmp/biggies.changed",
     397                asprintf(&tmp, "echo \"%s/%s not found\" >> %s/biggies.changed",
    398398                            bkpinfo->restore_path,
    399                             biggiestruct.filename);
     399                            biggiestruct.filename,
     400                            bkpinfo->tmpdir);
    400401                system(tmp);
    401402                paranoid_free(tmp);
     
    786787                    biggie_fname);
    787788            log_to_screen(tmp);
    788             sprintf(tmp, "echo \"%s\" >> /tmp/biggies.changed",
    789                     biggie_fname);
     789            sprintf(tmp, "echo \"%s\" >> %s/biggies.changed",
     790                    biggie_fname, bkpinfo->tmpdir);
    790791            system(tmp);
    791792        }
     
    11811182/* close tape; exit */
    11821183//  fclose(g_tape_stream); <-- not needed; is handled by closein_tape()
    1183     paranoid_system
    1184         ("rm -f /tmp/biggies.changed /tmp/changed.files.[0-9]* 2> /dev/null");
    1185     sprintf(changed_files_fname, "/tmp/changed.files.%d",
    1186             (int) (random() % 32767));
     1184    sprintf(tmp, "rm -f %s/biggies.changed %s/changed.files 2> /dev/null", bkpinfo->tmpdir, bkpinfo->tmpdir);
     1185    paranoid_system(tmp);
     1186    sprintf(changed_files_fname, "%s/changed.files", bkpinfo->tmpdir);
    11871187    sprintf(tmp,
    11881188            "grep -E '^%s:.*$' %s | cut -d'\"' -f2 | sort -u | awk '{print \"/\"$0;};' | tr -s '/' '/' | grep -v \"(total of\" | grep -v \"incheckentry.*xwait\" | grep -vE '^/afio:.*$' | grep -vE '^dev/.*$'  > %s",
     
    12011201        }
    12021202    }
    1203     sprintf(tmp, "cat /tmp/biggies.changed >> %s", changed_files_fname);
     1203    sprintf(tmp, "cat %s/biggies.changed >> %s", bkpinfo->tmpdir, changed_files_fname);
    12041204    paranoid_system(tmp);
    12051205
    12061206    diffs = count_lines_in_file(changed_files_fname);
    12071207    if (diffs > 0) {
    1208         sprintf(tmp, "cp -f %s %s", changed_files_fname,
    1209                 "/tmp/changed.files");
     1208        sprintf(tmp, "cp -f %s %s/changed.files", changed_files_fname,
     1209                MINDI_CACHE);
    12101210        run_program_and_log_output(tmp, FALSE);
    12111211        sprintf(tmp,
    1212                 "%ld files differed from live filesystem; type less %s or less %s to see",
    1213                 diffs, changed_files_fname, "/tmp/changed.files");
     1212                "%ld files differed from live filesystem; type less %s or less %s/changed.files to see",
     1213                diffs, changed_files_fname, MINDI_CACHE);
    12141214        log_msg(0, tmp);
    1215         log_to_screen
    1216             ("See /tmp/changed.files for a list of nonmatching files.");
    1217         log_to_screen
    1218             ("The files probably changed on filesystem, not on backup media.");
     1215        log_to_screen("See "MINDI_CACHE"/changed.files for a list of nonmatching files.");
     1216        log_to_screen("The files probably changed on filesystem, not on backup media.");
    12191217        //      retval++;
    12201218    }
  • branches/2.2.5/mondo/src/common/newt-specific.c

    r1463 r1644  
    437437
    438438        printf("---FATALERROR--- %s\n", error_string);
    439         sprintf(command, "gzip -9c %s > /tmp/MA.log.gz 2> /dev/null", MONDO_LOGFILE);
     439        sprintf(command, "gzip -9c %s > %s/MA.log.gz 2> /dev/null", MONDO_LOGFILE, MINDI_CACHE);
    440440        system(command);
    441441        printf
     
    445445                ("The list's members can help you, if you attach that file to your e-mail.\n");
    446446        printf("Log file: %s\n", MONDO_LOGFILE);
    447         if (does_file_exist("/tmp/MA.log.gz")) {
    448             printf
    449                 ("FYI, I have gzipped the log and saved it to /tmp/MA.log.gz\n");
     447        if (does_file_exist(MINDI_CACHE"/MA.log.gz")) {
     448            printf("FYI, I have gzipped the log and saved it to "MINDI_CACHE"/MA.log.gz.\n");
    450449        }
    451450        printf("Mondo has aborted.\n");
Note: See TracChangeset for help on using the changeset viewer.