Module Name: src
Committed By: kiyohara
Date: Mon Sep 20 06:54:06 UTC 2010
Modified Files:
src/sys/dev: ld.c ldvar.h
Log Message:
Check disk bounds, in RAW_PART.
To generate a diff of this commit:
cvs rdiff -u -r1.67 -r1.68 src/sys/dev/ld.c
cvs rdiff -u -r1.17 -r1.18 src/sys/dev/ldvar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/ld.c
diff -u src/sys/dev/ld.c:1.67 src/sys/dev/ld.c:1.68
--- src/sys/dev/ld.c:1.67 Thu Aug 19 17:59:10 2010
+++ src/sys/dev/ld.c Mon Sep 20 06:54:06 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: ld.c,v 1.67 2010/08/19 17:59:10 jmcneill Exp $ */
+/* $NetBSD: ld.c,v 1.68 2010/09/20 06:54:06 kiyohara Exp $ */
/*-
* Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ld.c,v 1.67 2010/08/19 17:59:10 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ld.c,v 1.68 2010/09/20 06:54:06 kiyohara Exp $");
#include "rnd.h"
@@ -145,6 +145,7 @@
"%d bytes/sect x %"PRIu64" sectors\n",
tbuf, sc->sc_ncylinders, sc->sc_nheads,
sc->sc_nsectors, sc->sc_secsize, sc->sc_secperunit);
+ sc->sc_disksize512 = sc->sc_secperunit * sc->sc_secsize / DEV_BSIZE;
ld_set_properties(sc);
@@ -626,10 +627,14 @@
* Do bounds checking and adjust the transfer. If error, process.
* If past the end of partition, just return.
*/
- if (part != RAW_PART &&
- bounds_check_with_label(&sc->sc_dk, bp,
- (sc->sc_flags & (LDF_WLABEL | LDF_LABELLING)) != 0) <= 0) {
- goto done;
+ if (part == RAW_PART) {
+ if (bounds_check_with_mediasize(bp, DEV_BSIZE,
+ sc->sc_disksize512) <= 0)
+ goto done;
+ } else {
+ if (bounds_check_with_label(&sc->sc_dk, bp,
+ (sc->sc_flags & (LDF_WLABEL | LDF_LABELLING)) != 0) <= 0)
+ goto done;
}
/*
Index: src/sys/dev/ldvar.h
diff -u src/sys/dev/ldvar.h:1.17 src/sys/dev/ldvar.h:1.18
--- src/sys/dev/ldvar.h:1.17 Fri Dec 18 00:40:24 2009
+++ src/sys/dev/ldvar.h Mon Sep 20 06:54:06 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: ldvar.h,v 1.17 2009/12/18 00:40:24 jakllsch Exp $ */
+/* $NetBSD: ldvar.h,v 1.18 2010/09/20 06:54:06 kiyohara Exp $ */
/*-
* Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -52,6 +52,7 @@
int sc_ncylinders; /* # cylinders */
int sc_nheads; /* # heads */
int sc_nsectors; /* # sectors per track */
+ int sc_disksize512;
/*
* The following are filled by hardware specific attachment code.