Module Name: src
Committed By: wiz
Date: Tue Jan 4 23:42:48 UTC 2011
Modified Files:
src/sbin/newfs_udf: newfs_udf.c
Log Message:
Fix memory leaks. Found by cppcheck.
To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sbin/newfs_udf/newfs_udf.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sbin/newfs_udf/newfs_udf.c
diff -u src/sbin/newfs_udf/newfs_udf.c:1.8 src/sbin/newfs_udf/newfs_udf.c:1.9
--- src/sbin/newfs_udf/newfs_udf.c:1.8 Thu Sep 17 10:37:28 2009
+++ src/sbin/newfs_udf/newfs_udf.c Tue Jan 4 23:42:48 2011
@@ -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;
+ }
}
/*