Validate input before converting timeval::tv_usec in compat/netbsd32

This commit is contained in:
kamil 2019-10-05 14:19:53 +00:00
parent 8e3fd5b698
commit 467fb18417
2 changed files with 12 additions and 5 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: netbsd32_compat_50.c,v 1.40 2019/09/20 15:09:07 kamil Exp $ */
/* $NetBSD: netbsd32_compat_50.c,v 1.41 2019/10/05 14:19:53 kamil Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@ -36,7 +36,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.40 2019/09/20 15:09:07 kamil Exp $");
__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.41 2019/10/05 14:19:53 kamil Exp $");
#if defined(_KERNEL_OPT)
#include "opt_compat_netbsd.h"
@ -216,6 +216,10 @@ compat_50_netbsd32_settimeofday(struct lwp *l,
return error;
netbsd32_to_timeval50(&atv32, &atv);
if (atv.tv_usec < 0 || atv.tv_usec >= 1000000)
return EINVAL;
TIMEVAL_TO_TIMESPEC(&atv, &ats);
return settime(p, &ats);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: netbsd32_time.c,v 1.52 2019/09/26 01:30:00 christos Exp $ */
/* $NetBSD: netbsd32_time.c,v 1.53 2019/10/05 14:19:53 kamil Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: netbsd32_time.c,v 1.52 2019/09/26 01:30:00 christos Exp $");
__KERNEL_RCSID(0, "$NetBSD: netbsd32_time.c,v 1.53 2019/10/05 14:19:53 kamil Exp $");
#if defined(_KERNEL_OPT)
#include "opt_ntp.h"
@ -243,6 +243,10 @@ netbsd32___settimeofday50(struct lwp *l, const struct netbsd32___settimeofday50_
return error;
netbsd32_to_timeval(&atv32, &atv);
if (atv.tv_usec < 0 || atv.tv_usec >= 1000000)
return EINVAL;
TIMEVAL_TO_TIMESPEC(&atv, &ats);
return settime(p, &ats);
}
@ -546,4 +550,3 @@ netbsd32_clock_getcpuclockid2(struct lwp *l,
}
return copyout(&clock_id, SCARG_P32(uap, clock_id), sizeof(clock_id));
}