From 804a9fee62e3fff93a822aac5f0a7a622da5341d Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Tue, 12 Sep 2017 17:00:25 +0200 Subject: [PATCH] unix: convert major/minor to uint64 before shifting in Mkdev on Darwin/*BSD Follow CL 63090 and change the Makedev function on Darwin and *BSD to convert to uint64 before shifting/masking. This avoids a potential overflow. Change-Id: I5b566329695cc5edcf82f0ff2366033011b0625b Reviewed-on: https://go-review.googlesource.com/63112 Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot --- unix/dev_darwin.go | 2 +- unix/dev_dragonfly.go | 2 +- unix/dev_freebsd.go | 2 +- unix/dev_netbsd.go | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/unix/dev_darwin.go b/unix/dev_darwin.go index 7d101d52..8d1dc0fa 100644 --- a/unix/dev_darwin.go +++ b/unix/dev_darwin.go @@ -20,5 +20,5 @@ func Minor(dev uint64) uint32 { // Mkdev returns a Darwin device number generated from the given major and minor // components. func Mkdev(major, minor uint32) uint64 { - return uint64((major << 24) | minor) + return (uint64(major) << 24) | uint64(minor) } diff --git a/unix/dev_dragonfly.go b/unix/dev_dragonfly.go index b7298868..8502f202 100644 --- a/unix/dev_dragonfly.go +++ b/unix/dev_dragonfly.go @@ -26,5 +26,5 @@ func Minor(dev uint64) uint32 { // Mkdev returns a DragonFlyBSD device number generated from the given major and // minor components. func Mkdev(major, minor uint32) uint64 { - return uint64((major << 8) | minor) + return (uint64(major) << 8) | uint64(minor) } diff --git a/unix/dev_freebsd.go b/unix/dev_freebsd.go index f793efda..eba3b4bd 100644 --- a/unix/dev_freebsd.go +++ b/unix/dev_freebsd.go @@ -26,5 +26,5 @@ func Minor(dev uint64) uint32 { // Mkdev returns a FreeBSD device number generated from the given major and // minor components. func Mkdev(major, minor uint32) uint64 { - return uint64((major << 8) | minor) + return (uint64(major) << 8) | uint64(minor) } diff --git a/unix/dev_netbsd.go b/unix/dev_netbsd.go index 08db58ee..b4a203d0 100644 --- a/unix/dev_netbsd.go +++ b/unix/dev_netbsd.go @@ -22,8 +22,8 @@ func Minor(dev uint64) uint32 { // Mkdev returns a NetBSD device number generated from the given major and minor // components. func Mkdev(major, minor uint32) uint64 { - dev := uint64((major << 8) & 0x000fff00) - dev |= uint64((minor << 12) & 0xfff00000) - dev |= uint64((minor << 0) & 0x000000ff) + dev := (uint64(major) << 8) & 0x000fff00 + dev |= (uint64(minor) << 12) & 0xfff00000 + dev |= (uint64(minor) << 0) & 0x000000ff return dev }