Module Name:    src
Committed By:   mrg
Date:           Wed May 26 04:28:15 UTC 2021

Modified Files:
        src/sys/lib/libsa: disklabel.c

Log Message:
in getdisklabel() swap the other-endian disklabel, #ifdef LIBSA_DISKLABEL_EI


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/lib/libsa/disklabel.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/lib/libsa/disklabel.c
diff -u src/sys/lib/libsa/disklabel.c:1.11 src/sys/lib/libsa/disklabel.c:1.12
--- src/sys/lib/libsa/disklabel.c:1.11	Mon May 17 08:50:36 2021
+++ src/sys/lib/libsa/disklabel.c	Wed May 26 04:28:15 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: disklabel.c,v 1.11 2021/05/17 08:50:36 mrg Exp $	*/
+/*	$NetBSD: disklabel.c,v 1.12 2021/05/26 04:28:15 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1993
@@ -54,6 +54,12 @@ getdisklabel(const char *buf, struct dis
 	elp = (const void *)(buf + DEV_BSIZE - sizeof(*dlp));
 	for (dlp = (const void *)buf; dlp <= elp;
 	    dlp = (const void *)((const char *)dlp + sizeof(long))) {
+#if defined(LIBSA_DISKLABEL_EI)
+		if (dlp->d_magic == bswap32(DISKMAGIC) &&
+		    dlp->d_magic2 == bswap32(DISKMAGIC)) {
+			disklabel_swap(__UNCONST(dlp), __UNCONST(dlp));
+		}
+#endif
 		if (dlp->d_magic != DISKMAGIC || dlp->d_magic2 != DISKMAGIC) {
 			if (msg == NULL)
 				msg = nolabel;

Reply via email to