1
0
mirror of https://github.com/golang/go synced 2024-10-05 05:11:25 -06:00
Commit Graph

52 Commits

Author SHA1 Message Date
Dave Cheney
343b4ba8c1 syscall: disable Setuid/Setgid on linux
Update #1435

This proposal disables Setuid and Setgid on all linux platforms.

Issue 1435 has been open for a long time, and it is unlikely to be addressed soon so an argument was made by a commenter

https://code.google.com/p/go/issues/detail?id=1435#c45

That these functions should made to fail rather than succeed in their broken state.

LGTM=ruiu, iant
R=iant, ruiu
CC=golang-codereviews
https://golang.org/cl/106170043
2014-06-24 09:16:24 +10:00
Brad Fitzpatrick
c8d49cf56f syscall: add Dup3 on Linux
With dup3, we can avoid an extra system call on some machines
while holding syscall.ForkLock. Currently we have to
syscall.Dup + syscall.CloseOnExec.

On machines with Linux and a new enough kernel, this can just
be dup3.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/12170045
2013-07-31 23:38:53 -07:00
Shenghou Ma
46e30c7d70 syscall: add {Set,Get}priority for Linux, and consistency tests
R=golang-dev, iant, bradfitz, dave
CC=golang-dev
https://golang.org/cl/7430044
2013-06-11 02:47:04 +08:00
Georg Reinke
e32d1154ec syscall: implement Pipe2 on Linux and use it in ForkExec
Fixes #2656.

R=golang-dev, bradfitz, iant, minux.ma
CC=golang-dev
https://golang.org/cl/7062057
2013-01-10 17:04:55 -08:00
Nick Craig-Wood
473441fc30 os: Improve the accuracy of os.Chtimes
I've been writing some code which involves syncing files (like
rsync) and it became apparent that under Linux I could read
modification times (os.Lstat) with nanosecond precision but
only write them with microsecond precision.  This difference
in precision is rather annoying when trying to discover
whether files need syncing or not!

I've patched syscall and os to increases the accuracy of of
os.Chtimes for Linux and Windows.  This involved exposing the
utimensat system call under Linux and a bit of extra code
under Windows.  I decided not to expose the "at" bit of the
system call as it is impossible to replicate under Windows, so
the patch adds syscall.Utimens() to all architectures along
with a ImplementsUtimens flag.

If the utimensat syscall isn't available (utimensat was added
to Linux in 2.6.22, Released, 8 July 2007) then it silently
falls back to the microsecond accuracy version it uses now.
The improved accuracy for Windows should be good for all
versions of Windows.

Unfortunately Darwin doesn't seem to have a utimensat system
call that I could find so I couldn't implement it there.  The
BSDs do, but since they share their syscall implementation
with Darwin I couldn't figure out how to define a syscall for
*BSD and not Darwin.  I've left this as a TODO in the code.

In the process I implemented the missing methods for Timespec
under Windows which I needed which just happened to round out
the Timespec API for all platforms!

------------------------------------------------------------

Test code: http://play.golang.org/p/1xnGuYOi4b

Linux Before (1000 ns precision)

$ ./utimetest.linux.before z
Setting mtime 1344937903123456789: 2012-08-14 10:51:43.123456789 +0100 BST
Reading mtime 1344937903123457000: 2012-08-14 10:51:43.123457 +0100 BST

Linux After (1 ns precision)

$ ./utimetest.linux.after z
Setting mtime 1344937903123456789: 2012-08-14 10:51:43.123456789 +0100 BST
Reading mtime 1344937903123456789: 2012-08-14 10:51:43.123456789 +0100 BST

Windows Before (1000 ns precision)

X:\>utimetest.windows.before.exe c:\Test.txt
Setting mtime 1344937903123456789: 2012-08-14 10:51:43.123456789 +0100 GMTDT
Reading mtime 1344937903123456000: 2012-08-14 10:51:43.123456 +0100 GMTDT

Windows After (100 ns precision)

X:\>utimetest.windows.after.exe c:\Test.txt
Setting mtime 1344937903123456789: 2012-08-14 10:51:43.123456789 +0100 GMTDT
Reading mtime 1344937903123456700: 2012-08-14 10:51:43.1234567 +0100 GMTDT

R=golang-dev, alex.brainman, rsc, bradfitz
CC=golang-dev
https://golang.org/cl/6905057
2012-12-13 13:02:39 -08:00
Han-Wen Nienhuys
4094c1bae7 syscall: add {Get,Set,List,Remove}xattr on Linux.
R=golang-dev, minux.ma, fullung, dave, rsc, hanwenn
CC=golang-dev
https://golang.org/cl/6350074
2012-11-01 14:49:38 -04:00
Dmitriy Vyukov
c242aa34cc syscalls: annotate Sendfile() for race detector
Fixes #4306.

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/6816054
2012-10-29 23:15:06 +04:00
Dmitriy Vyukov
cffbfaeb18 race: syscall changes
This is a part of a bigger change that adds data race detection feature:
https://golang.org/cl/6456044
The purpose of this patch is to provide coarse-grained synchronization
between all Read() and Write() calls.

R=rsc, bradfitz, alex.brainman
CC=golang-dev
https://golang.org/cl/6610064
2012-10-09 20:51:58 +04:00
Alexey Borzenkov
a108369c83 syscall: return EINVAL when string arguments have NUL characters
Since NUL usually terminates strings in underlying syscalls, allowing
it when converting string arguments is a security risk, especially
when dealing with filenames. For example, a program might reason that
filename like "/root/..\x00/" is a subdirectory or "/root/" and allow
access to it, while underlying syscall will treat "\x00" as an end of
that string and the actual filename will be "/root/..", which might
be unexpected. Returning EINVAL when string arguments have NUL in
them makes sure this attack vector is unusable.

R=golang-dev, r, bradfitz, fullung, rsc, minux.ma
CC=golang-dev
https://golang.org/cl/6458050
2012-08-05 17:24:32 -04:00
Han-Wen Nienhuys
36fe436cba pkg/syscall: unexport Prlimit.
This syscall was inadvertently exported when fixing
Getrlimit/Setrlimit on 32-bit platforms.

R=golang-dev, minux.ma
CC=golang-dev
https://golang.org/cl/6458051
2012-07-31 08:21:24 +10:00
Han-Wen Nienhuys
8b7d39e7b6 syscall: use 32 bits structure for Getrlimit/Setrlimit on 386/ARM.
Fixes #2492

R=rsc, bradfitz
CC=golang-dev
https://golang.org/cl/6295073
2012-07-02 22:57:32 -07:00
Russ Cox
33f7596f8d syscall: linux Tgkill takes a Signal too
R=golang-dev, gri
CC=golang-dev
https://golang.org/cl/5649089
2012-02-14 13:07:14 -05:00
Russ Cox
35586f718c os/signal: selective signal handling
Restore package os/signal, with new API:
Notify replaces Incoming, allowing clients
to ask for certain signals only.  Also, signals
go to everyone who asks, not just one client.

This could plausibly move into package os now
that there are no magic side effects as a result
of the import.

Update runtime for new API: move common Unix
signal handling code into signal_unix.c.
(It's so easy to do this now that we don't have
to edit Makefiles!)

Tested on darwin,linux 386,amd64.

Fixes #1266.

R=r, dsymonds, bradfitz, iant, borman
CC=golang-dev
https://golang.org/cl/3749041
2012-02-13 13:52:37 -05:00
Russ Cox
65ba8ee07e syscall: make linux Dup2 match other systems
You could argue for changing all the others, but
Linux is outvoted, and the only time it matters
is when newfd==-1, in which case you can call Dup.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/5650073
2012-02-13 00:11:36 -05:00
Ian Lance Taylor
384329592a net, syscall, os: set CLOEXEC flag on epoll/kqueue descriptor
Enable new test in os.

R=dave, iant, rsc
CC=golang-dev
https://golang.org/cl/5494061
2011-12-19 12:57:49 -08:00
Russ Cox
c017a8299f syscall: use error
- syscall (not os) now defines the Errno type.
- the low-level assembly functions Syscall, Syscall6, and so on
  return Errno, not uintptr
- syscall wrappers all return error, not uintptr.

R=golang-dev, mikioh.mikioh, r, alex.brainman
CC=golang-dev
https://golang.org/cl/5372080
2011-11-13 22:44:52 -05:00
David Anderson
85b9f3573e syscall: use uintptr for Mount flags.
R=bradfitz, rsc
CC=golang-dev
https://golang.org/cl/5308044
2011-10-24 19:28:50 -07:00
David Anderson
bb282baa93 syscall: adjust Mount to accomodate stricter FS implementations.
Notably, the "data" argument should be nil if no options are
given, or (at least) the cgroup filesystem will refuse to
mount.

R=bradfitz, rsc
CC=golang-dev
https://golang.org/cl/5147047
2011-10-14 09:19:45 -07:00
Russ Cox
aebfd63cd9 syscall: add Flock on Linux
Fixes #2069.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4703048
2011-07-13 15:34:36 -07:00
Brad Fitzpatrick
bf73ca88a6 syscall: sendfile
R=iant
CC=golang-dev
https://golang.org/cl/4553051
2011-05-20 11:51:31 -07:00
Albert Strasheim
839e9eada0 syscall: Mlock, Munlock, Mlockall, Munlockall on Linux.
R=rsc, bradfitzgo
CC=golang-dev
https://golang.org/cl/4433070
2011-04-26 06:41:19 -07:00
Albert Strasheim
946a4ea0e3 syscall: Madvise and Mprotect for Linux.
R=rsc
CC=golang-dev
https://golang.org/cl/4369047
2011-04-21 10:23:11 -04:00
Russ Cox
48ae1f2d9b syscall: add Mmap, Munmap on Linux, FreeBSD, OS X
* tweak mksyscall*.pl to be more gofmt-compatible.
* add mkall.sh -syscalls option.
* add sys/mman.h constants on OS X

R=r, eds, niemeyer
CC=golang-dev
https://golang.org/cl/4369044
2011-04-06 17:52:02 -04:00
Albert Strasheim
c6810e76ed syscall: GetsockoptInt.
R=rsc, iant
CC=golang-dev
https://golang.org/cl/4271060
2011-03-23 14:33:48 -04:00
Ian Lance Taylor
4fd41e494a syscall: Permit non-blocking syscalls.
Permit system calls to be designated as non-blocking, meaning
that we simply call them without involving the scheduler.

This change by itself is mostly performance neutral.  In
combination with a following change to the net package there
is a performance advantage.

R=rsc, dfc, r2, iant2, rsc1
CC=golang-dev
https://golang.org/cl/4278055
2011-03-16 19:03:01 -07:00
David Anderson
ad102e143c syscall: implement Mount and Unmount for linux.
Note that, while the final argument of mount(2) is a void*, in
practice all filesystem implementations treat it as a string
of comma-separated mount options.

R=bradfitzgo, bradfitzwork
CC=golang-dev
https://golang.org/cl/4247070
2011-03-09 05:58:47 -08:00
David Anderson
05660b79ea syscall: implement Reboot for linux.
The published interface is the simple version of the syscall,
allowing all reboot functions except for the esoteric
LINUX_REBOOT_CMD_RESTART2.

R=golang-dev, bradfitzgo, bradfitzwork
CC=golang-dev
https://golang.org/cl/4256060
2011-03-09 05:45:08 -08:00
Russ Cox
56faae21d2 syscall: do not use NULL for zero-length read, write
Avoids problems running Linux binaries under QEMU.

R=r, gri
CC=golang-dev
https://golang.org/cl/4151043
2011-02-09 14:28:47 -05:00
Russ Cox
189d4ff776 syscall: correct Linux Splice definition
Fixes #1376.

R=r
CC=golang-dev
https://golang.org/cl/3869042
2011-01-05 14:35:07 -05:00
Peter Mundy
fa7341aafd syscall: use 64-bit file size for truncation on Linux
Truncate and Ftruncate for 32-bit Linux should use 64-bit
offset system calls.

R=rsc
CC=golang-dev, royger
https://golang.org/cl/2943041
2010-11-05 16:41:23 -04:00
Russ Cox
1142b60dad syscall/arm: correct 64-bit system call arguments
Thanks to kaib for the tip.

R=ken2
CC=golang-dev
https://golang.org/cl/2596043
2010-10-20 10:39:46 -04:00
Balazs Lecz
4bfcfcf89f syscall: add inotify on Linux
R=rsc
CC=golang-dev
https://golang.org/cl/2241045
2010-09-27 11:44:26 -04:00
Russ Cox
5c4917ce33 syscall: rebuild z files
darwin/386
darwin/amd64
freebsd/386
freebsd/amd64
linux/386
linux/amd64
nacl/386

TBR=adg
CC=golang-dev
https://golang.org/cl/2198047
2010-09-24 15:17:20 -04:00
Ian Lance Taylor
7d03d0ec6b syscall: Use vsyscall for syscall.Gettimeofday and .Time on linux amd64.
Regenerate zsyscall_linux_*.go files with recent changes to
mksyscall.sh.

Add socketpair to syscall_linux_amd64.go; for some reason it
was in the generated file but not in the source file.

R=rsc, r2
CC=golang-dev
https://golang.org/cl/2190044
2010-09-21 06:49:56 -07:00
Rob Pike
e45b58fe96 os: change the type of permissions argument for Open etc. to uint32.
Besides being more correct, it protects against people accidentally
exchanging the permission and open mode arguments to Open.

R=rsc
CC=golang-dev
https://golang.org/cl/1904045
2010-08-04 08:34:52 +10:00
Russ Cox
cbc01a3e76 syscall: add Utimes on Darwin/FreeBSD, add Futimes everywhere
Needed for CL 1103041 and beyond.

R=adg, bradfitzpatrick
CC=bradfitz, golang-dev
https://golang.org/cl/1172042
2010-05-19 17:47:57 -07:00
Russ Cox
23bf408d41 syscall: fix arm build (fix bugs in generator, to add O_LARGEFILE)
R=r
CC=golang-dev
https://golang.org/cl/1021043
2010-05-03 11:11:01 -07:00
Russ Cox
7906e31167 syscall: force O_LARGEFILE in Linux open system call
Fixes #717.

R=adg, PeterGo
CC=golang-dev
https://golang.org/cl/1032041
2010-04-29 23:34:06 -07:00
Andrew Gerrand
3ffbd57b94 syscall: match linux Setsid function signature to darwin
SETSID does return an errno - any reason why it has been done this
way in zsyscall_linux_* ? Otherwise it should be the same as darwin.

From SETSID(2) on my Linux box:

ERRORS
       On error, -1 is returned, and errno is set.

Fixes #730

R=rsc
CC=golang-dev
https://golang.org/cl/878047
2010-04-19 13:12:11 +10:00
Robert Griesemer
d65a5cce89 1) Change default gofmt default settings for
parsing and printing to new syntax.

   Use -oldparser to parse the old syntax,
   use -oldprinter to print the old syntax.

2) Change default gofmt formatting settings
   to use tabs for indentation only and to use
   spaces for alignment. This will make the code
   alignment insensitive to an editor's tabwidth.

   Use -spaces=false to use tabs for alignment.

3) Manually changed src/exp/parser/parser_test.go
   so that it doesn't try to parse the parser's
   source files using the old syntax (they have
   new syntax now).

4) gofmt -w src misc test/bench

4th set of files.

R=rsc
CC=golang-dev
https://golang.org/cl/180049
2009-12-15 15:40:16 -08:00
Christopher Wedgwood
58578905ba syscall: fix error return bug for 64-bit return on 32-bit platform
R=dho, rsc
CC=r
https://golang.org/cl/176058
2009-12-13 13:05:49 -08:00
Ian Lance Taylor
44c1eb6bed Fix syscall.Statfs and syscall.Fstatfs for 386 GNU/Linux.
For 386 we use the [f]statfs64 system call, which takes three
parameters: the filename, the size of the statfs64 structure,
and a pointer to the structure itself.

R=rsc
https://golang.org/cl/166073
2009-12-04 21:58:32 -08:00
Robert Griesemer
40621d5c0d remove semis after statements in one-statement statement lists
R=rsc, r
http://go/go-review/1025029
2009-11-09 12:07:39 -08:00
Russ Cox
fd1add2768 syscall cleanup.
* rename PORT.sh -> mkall.sh (hopefully more obvious),
   change behavior: run commands by default.
 * pull more constants out of #defines automatically,
   instead of editing large lists by hand.
 * add Recvfrom, Sendto

add os.O_EXCL.

R=r
http://go/go-review/1017009
2009-11-01 11:13:27 -08:00
Russ Cox
6faacd2244 apply gofmt to auto-generated syscall files
R=gri
DELTA=4023  (104 added, 27 deleted, 3892 changed)
OCL=35416
CL=35418
2009-10-06 19:38:30 -07:00
Russ Cox
98c98192ec final batch for "declared and not used"
* update mksyscall.sh and rebuild syscall/z*.go
 * fix a few linux-only files

R=r
DELTA=455  (12 added, 1 deleted, 442 changed)
OCL=34637
CL=34655
2009-09-15 13:51:33 -07:00
Rob Pike
cd32498ba5 change the names to have .sh suffixes.
also fix the comments in the generated files.

R=rsc
DELTA=949  (470 added, 465 deleted, 14 changed)
OCL=33197
CL=33201
2009-08-13 13:22:37 -07:00
Russ Cox
b04ac108fd convert non-low-level non-google pkg code
to whole-package compilation.

R=r
OCL=33070
CL=33101
2009-08-12 13:19:17 -07:00
Austin Clements
bc2fda9c89 Regenerate Linux 386 syscall bindings to add ptrace.
R=rsc
APPROVED=rsc
DELTA=82  (80 added, 2 deleted, 0 changed)
OCL=31610
CL=31612
2009-07-14 11:59:19 -07:00
Russ Cox
da5e962e49 shuffle some Linux system calls around for 386
R=r
DELTA=37  (17 added, 15 deleted, 5 changed)
OCL=30428
CL=30444
2009-06-17 15:16:06 -07:00