Module Name: src Committed By: mlelstv Date: Tue Jan 24 07:09:48 UTC 2023
Modified Files: src/sys/dev/i2c: ds1307.c Log Message: Don't panic with invalid user data, just return an error. To generate a diff of this commit: cvs rdiff -u -r1.39 -r1.40 src/sys/dev/i2c/ds1307.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/dev/i2c/ds1307.c diff -u src/sys/dev/i2c/ds1307.c:1.39 src/sys/dev/i2c/ds1307.c:1.40 --- src/sys/dev/i2c/ds1307.c:1.39 Tue Aug 3 23:12:14 2021 +++ src/sys/dev/i2c/ds1307.c Tue Jan 24 07:09:48 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ds1307.c,v 1.39 2021/08/03 23:12:14 andvar Exp $ */ +/* $NetBSD: ds1307.c,v 1.40 2023/01/24 07:09:48 mlelstv Exp $ */ /* * Copyright (c) 2003 Wasabi Systems, Inc. @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ds1307.c,v 1.39 2021/08/03 23:12:14 andvar Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ds1307.c,v 1.40 2023/01/24 07:09:48 mlelstv Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -411,13 +411,12 @@ dsrtc_read(dev_t dev, struct uio *uio, i return ENXIO; const struct dsrtc_model * const dm = &sc->sc_model; - if (uio->uio_offset >= dm->dm_nvram_size) + if (uio->uio_offset < 0 || uio->uio_offset >= dm->dm_nvram_size) return EINVAL; if ((error = iic_acquire_bus(sc->sc_tag, 0)) != 0) return error; - KASSERT(uio->uio_offset >= 0); while (uio->uio_resid && uio->uio_offset < dm->dm_nvram_size) { uint8_t ch, cmd; const u_int a = uio->uio_offset;