From delphij@frontfree.net  Sun Sep  5 16:49:01 2004
Return-Path: <delphij@frontfree.net>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id CB17B16A4CE
	for <FreeBSD-gnats-submit@freebsd.org>; Sun,  5 Sep 2004 16:49:01 +0000 (GMT)
Received: from mail.freebsd.org.cn (dns3.freebsd.org.cn [61.129.66.75])
	by mx1.FreeBSD.org (Postfix) with SMTP id 4E64943D5A
	for <FreeBSD-gnats-submit@freebsd.org>; Sun,  5 Sep 2004 16:48:56 +0000 (GMT)
	(envelope-from delphij@frontfree.net)
Received: (qmail 20443 invoked by uid 0); 5 Sep 2004 16:45:33 -0000
Received: from unknown (HELO beastie.frontfree.net) (219.239.98.7)
  by mail.freebsd.org.cn with SMTP; 5 Sep 2004 16:45:33 -0000
Received: from localhost (localhost.frontfree.net [127.0.0.1])
	by beastie.frontfree.net (Postfix) with ESMTP id 8416E131015;
	Mon,  6 Sep 2004 00:48:41 +0800 (CST)
Received: from beastie.frontfree.net ([127.0.0.1])
 by localhost (beastie.frontfree.net [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 02236-07; Mon,  6 Sep 2004 00:48:37 +0800 (CST)
Received: by beastie.frontfree.net (Postfix, from userid 1001)
	id 451FF130C42; Mon,  6 Sep 2004 00:48:36 +0800 (CST)
Message-Id: <20040905164836.451FF130C42@beastie.frontfree.net>
Date: Mon,  6 Sep 2004 00:48:36 +0800 (CST)
From: Xin LI <delphij@frontfree.net>
Reply-To: Xin LI <delphij@frontfree.net>
To: FreeBSD-gnats-submit@freebsd.org
Cc: FreeBSD-qa@FreeBSD.org, re@FreeBSD.org
Subject: [PATCH] Only make one active partition in sysinstall(8)
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         71404
>Category:       bin
>Synopsis:       [sysinstall] [patch] Only make one active partition in sysinstall(8)
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    delphij
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Sep 05 16:50:20 GMT 2004
>Closed-Date:    Mon Sep 20 12:23:27 GMT 2004
>Last-Modified:  Mon Sep 20 12:23:27 GMT 2004
>Originator:     Xin LI
>Release:        FreeBSD 5.2-delphij i386
>Organization:
The FreeBSD Simplified Chinese Project
>Environment:
System: FreeBSD beastie.frontfree.net 5.2-delphij FreeBSD 5.2-delphij #0: Tue Aug 17 14:22:25 CST 2004 delphij@beastie.frontfree.net:/usr/obj/usr/src/sys/BEASTIE i386

>Description:
	The handling of active partition in sysinstall(8) contained a minor
flaw that allows two partitions to be marked as "active" in the same time.
Before having a user shoot his or her feet, I think it would be a good idea
not permitting this at all.
	
>How-To-Repeat:
	Run sysinstall(8), Configure -> Fdisk ->  (choose a disk having more
than one partition) -> try to use "S" on more than one partition.

>Fix:

	The attached patch would reset active states in the whole partition
chain and hence won't allow two partitions to be set "active" at the same
time.  Might be a good candidate for the upcoming 5.3-RELEASE.

	Along with the functional patch I have added a "CHUNK_INFO_ENTRIES"
define to make it easier to have consist code.

--- patch-sysinstall::disks.c begins here ---
Index: disks.c
===================================================================
RCS file: /home/fcvs/src/usr.sbin/sysinstall/disks.c,v
retrieving revision 1.152
diff -u -r1.152 disks.c
--- disks.c	2 Aug 2004 23:18:48 -0000	1.152
+++ disks.c	5 Sep 2004 16:39:22 -0000
@@ -74,7 +74,8 @@
 #define CHUNK_START_ROW		5
 
 /* Where we keep track of MBR chunks */
-static struct chunk *chunk_info[16];
+#define	CHUNK_INFO_ENTRIES	16
+static struct chunk *chunk_info[CHUNK_INFO_ENTRIES];
 static int current_chunk;
 
 static void	diskPartitionNonInteractive(Device *dev);
@@ -312,6 +313,7 @@
 {
     char *cp, *p;
     int rv, key = 0;
+    int i;
     Boolean chunking;
     char *msg = NULL;
 #ifdef PC98
@@ -535,6 +537,10 @@
 	    break;
 	
 	case 'S':
+	    /* Clear active states so we won't have two */
+	    for (i = 0; (chunk_info[i] != NULL) && (i < CHUNK_INFO_ENTRIES); i++)
+		chunk_info[i]->flags &= !CHUNK_ACTIVE;
+
 	    /* Set Bootable */
 	    chunk_info[current_chunk]->flags |= CHUNK_ACTIVE;
 	    break;
--- patch-sysinstall::disks.c ends here ---


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->freebsd-qa 
Responsible-Changed-By: arved 
Responsible-Changed-When: Mon Sep 6 14:08:24 GMT 2004 
Responsible-Changed-Why:  
Over to sysinstall "maintainers" 

http://www.freebsd.org/cgi/query-pr.cgi?pr=71404 
State-Changed-From-To: open->patched 
State-Changed-By: delphij 
State-Changed-When: Wed Sep 15 08:34:04 GMT 2004 
State-Changed-Why:  
Take my own PR.  Patch committed to -HEAD. 


Responsible-Changed-From-To: freebsd-qa->delphij 
Responsible-Changed-By: delphij 
Responsible-Changed-When: Wed Sep 15 08:34:04 GMT 2004 
Responsible-Changed-Why:  
Take my own PR.  Patch committed to -HEAD. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=71404 
State-Changed-From-To: patched->closed 
State-Changed-By: delphij 
State-Changed-When: Mon Sep 20 12:22:42 GMT 2004 
State-Changed-Why:  
MFC'ed to RELENG_4 and RELENG_5. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=71404 
>Unformatted:
