Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/tests/lib/libc/stdio Avoid undefined behavior in is_module_p...
details: https://anonhg.NetBSD.org/src/rev/80d23a0107a5
branches: trunk
changeset: 745031:80d23a0107a5
user: kamil <kamil%NetBSD.org@localhost>
date: Fri Feb 21 22:14:59 2020 +0000
description:
Avoid undefined behavior in is_module_present()
t_fopen.c:339:18, member access within misaligned address 0x7f7ff7ebd004
for type 'modstat_t' (aka 'struct modstat') which requires 8 byte alignment
diffstat:
tests/lib/libc/stdio/t_fopen.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diffs (36 lines):
diff -r 7f48197ee5cd -r 80d23a0107a5 tests/lib/libc/stdio/t_fopen.c
--- a/tests/lib/libc/stdio/t_fopen.c Fri Feb 21 22:04:06 2020 +0000
+++ b/tests/lib/libc/stdio/t_fopen.c Fri Feb 21 22:14:59 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: t_fopen.c,v 1.7 2019/07/16 17:29:18 martin Exp $ */
+/* $NetBSD: t_fopen.c,v 1.8 2020/02/21 22:14:59 kamil Exp $ */
/*-
* Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: t_fopen.c,v 1.7 2019/07/16 17:29:18 martin Exp $");
+__RCSID("$NetBSD: t_fopen.c,v 1.8 2020/02/21 22:14:59 kamil Exp $");
#include <sys/param.h>
#include <sys/types.h>
@@ -314,6 +314,7 @@
int count;
struct iovec iov;
modstat_t *ms;
+ modstat_t m;
for (len = 8192; ;) {
iov.iov_base = malloc(len);
@@ -336,7 +337,8 @@
count = *(int *)iov.iov_base;
ms = (modstat_t *)((char *)iov.iov_base + sizeof(int));
while (count > 0) {
- if (strcmp(ms->ms_name, name) == 0) {
+ memcpy(&m, ms, sizeof(m));
+ if (strcmp(m.ms_name, name) == 0) {
found = true;
break;
}
Home |
Main Index |
Thread Index |
Old Index