Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.sbin/sysinst Do not free() an array embedded in another ...



details:   https://anonhg.NetBSD.org/src/rev/f1081d487ca5
branches:  trunk
changeset: 457973:f1081d487ca5
user:      martin <martin%NetBSD.org@localhost>
date:      Thu Jul 25 18:55:40 2019 +0000

description:
Do not free() an array embedded in another structure

diffstat:

 usr.sbin/sysinst/mbr.c |  31 +++++++++++++------------------
 1 files changed, 13 insertions(+), 18 deletions(-)

diffs (63 lines):

diff -r 984d8a7be3e2 -r f1081d487ca5 usr.sbin/sysinst/mbr.c
--- a/usr.sbin/sysinst/mbr.c    Thu Jul 25 16:28:10 2019 +0000
+++ b/usr.sbin/sysinst/mbr.c    Thu Jul 25 18:55:40 2019 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: mbr.c,v 1.17 2019/07/25 13:16:35 martin Exp $ */
+/*     $NetBSD: mbr.c,v 1.18 2019/07/25 18:55:40 martin Exp $ */
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -223,13 +223,20 @@
 #endif
 
 static void
+free_last_mounted(mbr_info_t *m)
+{
+       size_t i;
+
+       for (i = 0; i < MBR_PART_COUNT; i++)
+               free(__UNCONST(m->last_mounted[i]));
+}
+
+static void
 free_mbr_info(mbr_info_t *m)
 {
        if (m == NULL)
                return;
-
-       for (int i = 0; i < MBR_PART_COUNT; i++)
-               free(__UNCONST(m->last_mounted[i]));
+       free_last_mounted(m);
        free(m);
 }
 
@@ -439,19 +446,6 @@
 }
 #endif
 
-static void
-free_mbr(mbr_info_t *mbri)
-{
-       mbr_info_t *m = mbri->extended, *next;
-
-       while (m != NULL) {
-               next = m->extended;
-               free_mbr_info(m);
-               m = next;
-       }
-       free_mbr_info(mbri);
-}
-
 static int
 valid_mbr(struct mbr_sector *mbrs)
 {
@@ -2390,7 +2384,8 @@
        if (parts->dlabel)
                parts->dlabel->pscheme->free(parts->dlabel);
 
-       free_mbr(&parts->mbr);
+       free_mbr_info(parts->mbr.extended);
+       free_last_mounted(&parts->mbr);
        free(parts);
 }
 



Home | Main Index | Thread Index | Old Index