Ignore:
Timestamp:
Dec 8, 2005, 5:20:29 PM (18 years ago)
Author:
bcornec
Message:

memory management continues:

  • mondoarchive handled completely
  • bkpinfo, begining of dyn. alloc.
  • lot of changes around memory everywhere

=> even if it compiles, i'm pretty sure it doesn't work yet (even not tried)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/mondo/mondo/mondorestore/mondo-rstr-tools.c

    r149 r171  
    202202   * allocate memory regions. test and set  -sab 16 feb 2003              *
    203203   ************************************************************************/
    204     char *incoming_ptr;
    205     char *question_ptr;
    206 
    207     char incoming[MAX_STR_LEN];
    208     char question[MAX_STR_LEN];
     204    char *incoming;
     205    char *question;
     206
     207    size_t n = 0;
    209208
    210209    assert_string_is_neither_NULL_nor_zerolength(infname);
    211210    assert_string_is_neither_NULL_nor_zerolength(outfname);
    212211
    213     incoming_ptr = malloc(sizeof(incoming));
    214     if (incoming_ptr == NULL) {
    215         fprintf(stderr, "Out of Memory\n");
    216         exit(EXIT_FAILURE);
    217     }
    218 
    219     question_ptr = malloc(sizeof(question));
    220     if (question_ptr == NULL) {
    221         fprintf(stderr, "Out of Memory\n");
    222         exit(EXIT_FAILURE);
    223     }
    224 
    225     memset(incoming_ptr, '\0', sizeof(incoming));
    226     memset(question_ptr, '\0', sizeof(question));
    227 
    228 
    229 
    230212    if (!(fin = fopen(infname, "r"))) {
    231213        fatal_error("Cannot openin infname");
     
    234216        fatal_error("Cannot openin outfname");
    235217    }
    236     for (fgets(incoming_ptr, MAX_STR_LEN, fin);
    237          !feof(fin); fgets(incoming_ptr, MAX_STR_LEN, fin)) {
    238         strip_spaces(incoming_ptr);
     218    for (getline(&incoming, &n, fin);
     219         !feof(fin); getline(&incoming, &n, fin)) {
     220        strip_spaces(incoming);
    239221
    240222        if (incoming[0] == '\0') {
     
    242224        }
    243225
    244         sprintf(question_ptr,
    245                 "Should I restore the image of %s ?", incoming_ptr);
    246 
    247         if (ask_me_yes_or_no(question_ptr)) {
    248             fprintf(fout, "%s\n", incoming_ptr);
     226        asprintf(&question,
     227                "Should I restore the image of %s ?", incoming);
     228
     229        if (ask_me_yes_or_no(question)) {
     230            fprintf(fout, "%s\n", incoming);
    249231        }
    250232    }
    251233
    252234  /*** free memory ***********/
    253     paranoid_free(incoming_ptr);
    254     incoming_ptr = NULL;
    255     paranoid_free(question_ptr);
    256     question_ptr = NULL;
     235    paranoid_free(incoming);
     236    paranoid_free(question);
    257237
    258238
     
    705685int mount_cdrom(struct s_bkpinfo *bkpinfo)
    706686{
    707     char *mount_cmd;
     687    char *mount_cmd, *tmp;
    708688    int i, res;
    709689#ifdef __FreeBSD__
     
    773753        if (bkpinfo->disaster_recovery
    774754            && does_file_exist("/tmp/CDROM-LIVES-HERE")) {
    775             strcpy(bkpinfo->media_device,
     755            paranoid_free(bkpinfo->media_device);
     756            asprintf(&tmp,
    776757                   last_line_of_file("/tmp/CDROM-LIVES-HERE"));
     758            bkpinfo->media_device = tmp;
    777759        } else {
    778             find_cdrom_device(bkpinfo->media_device, TRUE);
     760            paranoid_free(bkpinfo->media_device);
     761            bkpinfo->media_device = find_cdrom_device(TRUE);
    779762        }
    780763
     
    10611044    if (bkpinfo->disaster_recovery) {
    10621045        if (bkpinfo->backup_media_type == cdstream) {
    1063             sprintf(bkpinfo->media_device, "/dev/cdrom");
    1064 //          bkpinfo->media_size[0] = -1;
     1046            paranoid_alloc(bkpinfo->media_device, "/dev/cdrom");
    10651047            bkpinfo->media_size[0] = 1999 * 1024;
    10661048            bkpinfo->media_size[1] = 650;   /* good guess */
    10671049        } else if (bkpinfo->backup_media_type == tape
    10681050                   || bkpinfo->backup_media_type == udev) {
    1069             if (read_cfg_var(cfg_file, "media-dev", value)) {
     1051            if (read_cfg_var(cfg_file, "media-dev", bkpinfo->media_device)) {
    10701052                fatal_error("Cannot get tape device name from cfg file");
    10711053            }
    1072             strcpy(bkpinfo->media_device, value);
    10731054            read_cfg_var(cfg_file, "media-size", value);
    10741055            bkpinfo->media_size[1] = atol(value);
     
    10771058            log_msg(2, tmp);
    10781059        } else {
    1079             strcpy(bkpinfo->media_device, "/dev/cdrom");    /* we don't really need this var */
     1060            paranoid_alloc(bkpinfo->media_device, "/dev/cdrom");
    10801061            bkpinfo->media_size[0] = 1999 * 1024;   /* 650, probably, but we don't need this var anyway */
    10811062            bkpinfo->media_size[1] = 1999 * 1024;   /* 650, probably, but we don't need this var anyway */
     
    12001181                            "Unable to mount isodir. Perhaps this is really a CD backup?");
    12011182                    bkpinfo->backup_media_type = cdr;
    1202                     strcpy(bkpinfo->media_device, "/dev/cdrom");    /* superfluous */
     1183                    paranoid_alloc(bkpinfo->media_device, "/dev/cdrom");
    12031184                    bkpinfo->isodir[0] = iso_mnt[0] = iso_path[0] = '\0';
    12041185                    if (mount_cdrom(bkpinfo)) {
     
    23872368    char *mounted_cfgf_path;
    23882369    char *tmp;
     2370    char *sav;
    23892371    char *mountpt;
    23902372    char *ramdisk_fname;
     
    24912473
    24922474            if (strlen(bkpinfo->media_device) == 0) {
    2493                 strcpy(bkpinfo->media_device, "/dev/st0");
    2494                 log_msg(2, "media_device is blank; assuming %s");
    2495             }
    2496             strcpy(tmp, bkpinfo->media_device);
     2475                paranoid_alloc(bkpinfo->media_device, "/dev/st0");
     2476                log_msg(2, "media_device is blank; assuming %s", bkpinfo->media_device);
     2477            }
     2478            asprintf(&sav,bkpinfo->media_device);
    24972479            if (extract_cfg_file_and_mountlist_from_tape_dev
    24982480                (bkpinfo->media_device)) {
    2499                 strcpy(bkpinfo->media_device, "/dev/st0");
     2481                paranoid_alloc(bkpinfo->media_device, "/dev/st0");
    25002482                if (extract_cfg_file_and_mountlist_from_tape_dev
    25012483                    (bkpinfo->media_device)) {
    2502                     strcpy(bkpinfo->media_device, "/dev/osst0");
     2484                    paranoid_alloc(bkpinfo->media_device, "/dev/osst0");
    25032485                    if (extract_cfg_file_and_mountlist_from_tape_dev
    25042486                        (bkpinfo->media_device)) {
    2505                         strcpy(bkpinfo->media_device, "/dev/ht0");
     2487                        paranoid_alloc(bkpinfo->media_device, "/dev/ht0");
    25062488                        if (extract_cfg_file_and_mountlist_from_tape_dev
    25072489                            (bkpinfo->media_device)) {
    25082490                            log_msg(3,
    25092491                                    "I tried lots of devices but none worked.");
    2510                             strcpy(bkpinfo->media_device, tmp);
     2492                            paranoid_alloc(bkpinfo->media_device, sav);
    25112493                        }
    25122494                    }
    25132495                }
    25142496            }
     2497            paranoid_free(sav);
    25152498
    25162499            if (!does_file_exist("tmp/mondo-restore.cfg")) {
Note: See TracChangeset for help on using the changeset viewer.