Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sbin/newfs_udf Fix memory leaks. Found by cppcheck.
details: https://anonhg.NetBSD.org/src/rev/15adcafedc51
branches: trunk
changeset: 760435:15adcafedc51
user: wiz <wiz%NetBSD.org@localhost>
date: Tue Jan 04 23:42:48 2011 +0000
description:
Fix memory leaks. Found by cppcheck.
diffstat:
sbin/newfs_udf/newfs_udf.c | 35 ++++++++++++++++++++++++++---------
1 files changed, 26 insertions(+), 9 deletions(-)
diffs (101 lines):
diff -r 9100a5f33ba7 -r 15adcafedc51 sbin/newfs_udf/newfs_udf.c
--- a/sbin/newfs_udf/newfs_udf.c Tue Jan 04 23:36:23 2011 +0000
+++ b/sbin/newfs_udf/newfs_udf.c Tue Jan 04 23:42:48 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: newfs_udf.c,v 1.8 2009/09/17 10:37:28 reinoud Exp $ */
+/* $NetBSD: newfs_udf.c,v 1.9 2011/01/04 23:42:48 wiz Exp $ */
/*
* Copyright (c) 2006, 2008 Reinoud Zandijk
@@ -848,8 +848,10 @@
/* block is bad */
printf("BAD block at %08d + %d \n",
loc, layout.blockingnr);
- if ((error = udf_register_bad_block(loc)))
+ if ((error = udf_register_bad_block(loc))) {
+ free(buffer);
return error;
+ }
num_errors ++;
}
loc += layout.blockingnr;
@@ -868,8 +870,10 @@
/* block is bad */
printf("BAD block at %08d + %d \n",
loc, layout.blockingnr);
- if ((error = udf_register_bad_block(loc)))
+ if ((error = udf_register_bad_block(loc))) {
+ free(buffer);
return error;
+ }
num_errors ++;
}
loc += layout.blockingnr;
@@ -904,8 +908,10 @@
/* wipe at least 6 times 2048 byte `sectors' */
for (cnt = 0; cnt < 6 *dpos; cnt++) {
pos = layout.iso9660_vrs + cnt;
- if ((error = udf_write_sector(iso9660_vrs_desc, pos)))
+ if ((error = udf_write_sector(iso9660_vrs_desc, pos))) {
+ free(iso9660_vrs_desc);
return error;
+ }
}
/* common VRS fields in all written out ISO descriptors */
@@ -915,8 +921,10 @@
/* BEA01, NSR[23], TEA01 */
memcpy(iso9660_vrs_desc->identifier, "BEA01", 5);
- if ((error = udf_write_sector(iso9660_vrs_desc, pos)))
+ if ((error = udf_write_sector(iso9660_vrs_desc, pos))) {
+ free(iso9660_vrs_desc);
return error;
+ }
pos += dpos;
if (context.dscrver == 2)
@@ -924,15 +932,20 @@
else
memcpy(iso9660_vrs_desc->identifier, "NSR03", 5);
;
- if ((error = udf_write_sector(iso9660_vrs_desc, pos)))
+ if ((error = udf_write_sector(iso9660_vrs_desc, pos))) {
+ free(iso9660_vrs_desc);
return error;
+ }
pos += dpos;
memcpy(iso9660_vrs_desc->identifier, "TEA01", 5);
- if ((error = udf_write_sector(iso9660_vrs_desc, pos)))
+ if ((error = udf_write_sector(iso9660_vrs_desc, pos))) {
+ free(iso9660_vrs_desc);
return error;
+ }
}
+ free(iso9660_vrs_desc);
/* return success */
return 0;
}
@@ -1062,14 +1075,18 @@
loc = (format_flags & FORMAT_TRACK512) ? layout.vds1 : ti.track_start;
for (; loc < layout.part_start_lba; loc++) {
- if ((error = udf_write_sector(zero_dscr, loc)))
+ if ((error = udf_write_sector(zero_dscr, loc))) {
+ free(zero_dscr);
return error;
+ }
}
+ free(zero_dscr);
/* Create anchors */
for (cnt = 0; cnt < 3; cnt++) {
- if ((error = udf_create_anchor(cnt)))
+ if ((error = udf_create_anchor(cnt))) {
return error;
+ }
}
/*
Home |
Main Index |
Thread Index |
Old Index