Fix some of the memory leaks and uninitialized variables which valgrind

notices.
This commit is contained in:
rocky
2004-02-07 02:40:20 +00:00
parent ada0949dfb
commit c090e7ee81
8 changed files with 389 additions and 22 deletions

View File

@@ -1,9 +1,9 @@
/*
$Id: cd-info.c,v 1.47 2003/11/16 19:30:45 rocky Exp $
$Id: cd-info.c,v 1.48 2004/02/07 02:40:20 rocky Exp $
Copyright (C) 2003 Rocky Bernstein <rocky@panix.com>
Copyright (C) 1996,1997,1998 Gerd Knorr <kraxel@bytesex.org>
and Heiko Ei<45>feldt <heiko@hexco.de>
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org>
and Heiko Ei<45>feldt <heiko@hexco.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -203,7 +203,7 @@ parse_options (int argc, const char *argv[])
poptContext optCon = poptGetContext (NULL, argc, argv, optionsTable, 0);
program_name = strrchr(argv[0],'/');
program_name = program_name ? program_name+1 : strdup(argv[0]);
program_name = program_name ? strdup(program_name+1) : strdup(argv[0]);
while ((opt = poptGetNextOpt (optCon)) != -1) {
switch (opt) {
@@ -242,6 +242,7 @@ parse_options (int argc, const char *argv[])
break;
default:
poptFreeContext(optCon);
return false;
}
}
@@ -252,6 +253,8 @@ parse_options (int argc, const char *argv[])
fprintf (stderr,
"%s: Source specified in option %s and as %s\n",
program_name, source_name, remaining_arg);
poptFreeContext(optCon);
free(program_name);
exit (EXIT_FAILURE);
}
@@ -264,12 +267,15 @@ parse_options (int argc, const char *argv[])
fprintf (stderr,
"%s: Source specified in previously %s and %s\n",
program_name, source_name, remaining_arg);
poptFreeContext(optCon);
free(program_name);
exit (EXIT_FAILURE);
}
}
}
poptFreeContext(optCon);
return true;
}

View File

@@ -1,5 +1,5 @@
/*
$Id: cd-read.c,v 1.15 2003/11/10 03:47:37 rocky Exp $
$Id: cd-read.c,v 1.16 2004/02/07 02:40:20 rocky Exp $
Copyright (C) 2003 Rocky Bernstein <rocky@panix.com>
@@ -229,7 +229,7 @@ parse_options (int argc, const char *argv[])
poptContext optCon = poptGetContext (NULL, argc, argv, optionsTable, 0);
program_name = strrchr(argv[0],'/');
program_name = program_name ? program_name+1 : strdup(argv[0]);
program_name = program_name ? strdup(program_name+1) : strdup(argv[0]);
while ((opt = poptGetNextOpt (optCon)) != -1)
switch (opt)
@@ -274,6 +274,8 @@ parse_options (int argc, const char *argv[])
break;
case OP_VERSION:
print_version(program_name, VERSION, 0, true);
poptFreeContext(optCon);
free(program_name);
exit (EXIT_SUCCESS);
break;
@@ -282,6 +284,8 @@ parse_options (int argc, const char *argv[])
poptBadOption(optCon, POPT_BADOPTION_NOALIAS),
poptStrerror(opt));
fprintf (stderr, "error while parsing command line - try --help\n");
poptFreeContext(optCon);
free(program_name);
exit (EXIT_FAILURE);
}
@@ -292,6 +296,8 @@ parse_options (int argc, const char *argv[])
fprintf (stderr,
"%s: Source specified in option %s and as %s\n",
program_name, source_name, remaining_arg);
poptFreeContext(optCon);
free(program_name);
exit (EXIT_FAILURE);
}
@@ -304,6 +310,8 @@ parse_options (int argc, const char *argv[])
fprintf (stderr,
"%s: Source specified in previously %s and %s\n",
program_name, source_name, remaining_arg);
poptFreeContext(optCon);
free(program_name);
exit (EXIT_FAILURE);
}
@@ -320,6 +328,8 @@ parse_options (int argc, const char *argv[])
fprintf(stderr,
"%s: Need to give a read mode (audio, m1f1, m1f2, m2f1 or m2f2)\n",
program_name);
poptFreeContext(optCon);
free(program_name);
exit(10);
}
@@ -338,6 +348,7 @@ parse_options (int argc, const char *argv[])
" the sector to read (%lu)\n",
program_name, (unsigned long) opts.end_lsn,
(unsigned long) opts.num_sectors);
poptFreeContext(optCon);
exit(12);
}
opts.start_lsn = opts.end_lsn - opts.num_sectors + 1;
@@ -356,6 +367,8 @@ parse_options (int argc, const char *argv[])
"%s: end LSN (%lu) needs to be less than start LSN (%lu)\n",
program_name, (unsigned long) opts.start_lsn,
(unsigned long) opts.end_lsn);
poptFreeContext(optCon);
free(program_name);
exit(13);
}
if (opts.num_sectors != opts.end_lsn - opts.start_lsn + 1)
@@ -365,11 +378,14 @@ parse_options (int argc, const char *argv[])
"and count (%d)\n",
program_name, (unsigned long) opts.start_lsn,
(unsigned long) opts.end_lsn, opts.num_sectors);
poptFreeContext(optCon);
free(program_name);
exit(14);
}
opts.num_sectors = opts.end_lsn - opts.start_lsn + 1;
}
poptFreeContext(optCon);
return true;
}
@@ -536,6 +552,8 @@ main(int argc, const char *argv[])
if (opts.output_file) close(output_fd);
cdio_destroy(cdio);
return 0;
myexit(cdio, EXIT_SUCCESS);
/* Not reached:*/
return(EXIT_SUCCESS);
}

View File

@@ -1,5 +1,5 @@
/*
$Id: iso-info.c,v 1.1 2004/02/01 16:00:06 rocky Exp $
$Id: iso-info.c,v 1.2 2004/02/07 02:40:20 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -102,7 +102,7 @@ parse_options (int argc, const char *argv[])
poptContext optCon = poptGetContext (NULL, argc, argv, optionsTable, 0);
program_name = strrchr(argv[0],'/');
program_name = program_name ? program_name+1 : strdup(argv[0]);
program_name = program_name ? strdup(program_name+1) : strdup(argv[0]);
while ((opt = poptGetNextOpt (optCon)) != -1) {
switch (opt) {
@@ -119,11 +119,13 @@ parse_options (int argc, const char *argv[])
fprintf (stderr,
"%s: Source specified in previously %s and %s\n",
program_name, source_name, remaining_arg);
poptFreeContext(optCon);
exit (EXIT_FAILURE);
}
}
}
poptFreeContext(optCon);
return true;
}
@@ -287,5 +289,6 @@ main(int argc, const char *argv[])
iso9660_close(iso);
/* Not reached:*/
free(program_name);
return(EXIT_SUCCESS);
}

View File

@@ -1,5 +1,5 @@
/*
$Id: util.c,v 1.3 2004/01/10 03:21:50 rocky Exp $
$Id: util.c,v 1.4 2004/02/07 02:40:20 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -29,13 +29,14 @@ char *program_name;
void
myexit(CdIo *cdio, int rc)
{
if (NULL != cdio)
cdio_destroy(cdio);
if (NULL != cdio) cdio_destroy(cdio);
if (NULL != program_name) free(program_name);
if (NULL != source_name) free(source_name);
exit(rc);
}
void
print_version (const char *program_name, const char *version,
print_version (char *program_name, const char *version,
int no_header, bool version_only)
{
@@ -61,6 +62,7 @@ PARTICULAR PURPOSE.\n\
printf("Default CD-ROM device: %s\n", default_device);
else
printf("No CD-ROM device found.\n");
free(program_name);
exit(100);
}

View File

@@ -1,5 +1,5 @@
/*
$Id: util.h,v 1.1 2003/09/21 04:21:39 rocky Exp $
$Id: util.h,v 1.2 2004/02/07 02:40:20 rocky Exp $
Copyright (C) 2003 Rocky Bernstein <rocky@panix.com>
@@ -94,7 +94,7 @@ extern cdio_log_handler_t gl_default_cdio_log_handler;
void myexit(CdIo *cdio, int rc);
void print_version (const char *program_name, const char *version,
void print_version (char *program_name, const char *version,
int no_header, bool version_only);
char *fillout_device_name(const char *device_name);