Fix an old bug in NATIVELABEL_ONLY case in PR/50729 by me. (sigh)

'disklabel -r -w' writes a disklabel at a wrong sector in
NATIVELABEL_ONLY && !LABELUSESMBR && LABELSECTOR != 0 case
if the target disk doesn't have a valid disklabel, due to
incorrect LABEL_OFFSET value.

Found and investigated on NetBSD/hp300 bootable CD tests.
Maybe this affects ports that use distrib/utils/x_disklabel
but have no MBR support, i.e. only NetBSD/hp300 10.0 and
NetBSD/ews4800mips 9.0 and later.

Should be pulled up to netbsd-10 and netbsd-9.
pull/38/head
tsutsui 2024-05-15 12:47:22 +00:00
parent b1f39b6076
commit edc3e298c6
1 changed files with 3 additions and 3 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: main.c,v 1.57 2021/11/03 14:25:39 nia Exp $ */
/* $NetBSD: main.c,v 1.58 2024/05/15 12:47:22 tsutsui Exp $ */
/*
* Copyright (c) 2006 The NetBSD Foundation, Inc.
@ -76,7 +76,7 @@ __COPYRIGHT("@(#) Copyright (c) 1987, 1993\
static char sccsid[] = "@(#)disklabel.c 8.4 (Berkeley) 5/4/95";
/* from static char sccsid[] = "@(#)disklabel.c 1.2 (Symmetric) 11/28/85"; */
#else
__RCSID("$NetBSD: main.c,v 1.57 2021/11/03 14:25:39 nia Exp $");
__RCSID("$NetBSD: main.c,v 1.58 2024/05/15 12:47:22 tsutsui Exp $");
#endif
#endif /* not lint */
@ -352,7 +352,7 @@ static const struct arch_endian {
#define labelsector LABELSECTOR
#define labelusesmbr LABELUSESMBR
#define maxpartitions MAXPARTITIONS
#define LABEL_OFFSET LABELOFFSET
#define LABEL_OFFSET (LABELSECTOR * DEV_BSIZE + LABELOFFSET)
#endif /* !NATIVELABEL_ONLY */
/*