1. 03 Oct, 2016 16 commits
  2. 02 Oct, 2016 4 commits
    • Adam Langley's avatar
      crypto/ecdsa: correct code comment. · 99841957
      Adam Langley authored
      The code comment mixed up max and min. In this case, min is correct
      because this entropy is only used to make the signature scheme
      probabilistic. (I.e. if it were fixed then the scheme would still be
      secure except that key.Sign(foo) would always give the same result for a
      fixed key and foo.)
      
      For this purpose, 256-bits is plenty.
      
      Fixes #16819.
      
      Change-Id: I309bb312b775cf0c4b7463c980ba4b19ad412c36
      Reviewed-on: https://go-review.googlesource.com/30153
      Run-TryBot: Adam Langley <agl@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      99841957
    • Adam Langley's avatar
      crypto/x509: return better error when a certificate contains no names. · 49aa1d79
      Adam Langley authored
      Currently, if a certificate contains no names (that we parsed),
      verification will return the confusing error:
          x509: certificate is valid for , not example.com.
      
      This change improves the error for that situation.
      
      Fixes #16834.
      
      Change-Id: I2ed9ed08298d7d50df758e503bdb55277449bf55
      Reviewed-on: https://go-review.googlesource.com/30152Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Adam Langley <agl@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      49aa1d79
    • Adam Langley's avatar
      crypto/x509: fix name constraints handling. · e4dafa32
      Adam Langley authored
      This change brings the behaviour of X.509 name constraints into line
      with NSS[1]. In this area, the behavior specified by the RFC and by NIST
      differs and this code follows the NIST behaviour.
      
      [1] https://github.com/servo/nss/blob/master/lib/certdb/genname.c
      
      Fixes #16347, fixes #14833.
      
      Change-Id: I5acd1970041291c2e3936f5b1fd36f2a0338e613
      Reviewed-on: https://go-review.googlesource.com/30155Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      e4dafa32
    • Emmanuel Odeke's avatar
      cmd/compile: improve error message for wrong number of arguments to return · 2d573eee
      Emmanuel Odeke authored
      Fixes #4215.
      Fixes #6750.
      
      Improves the error message for wrong number of arguments by comparing
      the signature of the return call site arguments, versus the function's
      expected return arguments.
      
      In this CL, the signature representation of:
      + ideal numbers(TIDEAL) ie float*, complex*, rune, int is
      "number" instead of "untyped number".
      + idealstring is "string" instead of "untyped string".
      + idealbool is "bool" instead of "untyped bool".
      
      However, the representation of other types remains as the compiler
      would produce.
      
      * Example 1(in the error messages, if all lines were printed):
      $ cat main.go && go run main.go
      package main
      
      func foo() (int, int) {
        return 2.3
      }
      
      func foo2() {
        return int(2), 2
      }
      
      func foo3(v int) (a, b, c, d int) {
        if v >= 5 {
          return 1
        }
        return 2, 3
      }
      
      func foo4(name string) (string, int) {
        switch name {
        case "cow":
          return "moo"
        case "dog":
          return "dog", 10, true
        case "fish":
          return ""
        default:
          return "lizard", 10
        }
      }
      
      type S int
      type T string
      type U float64
      
      func foo5() (S, T, U) {
        if false {
          return ""
        } else {
          ptr := new(T)
          return ptr
        }
        return new(S), 12.34, 1 + 0i, 'r', true
      }
      
      func foo6() (T, string) {
        return "T"
      }
      
      ./issue4215.go:4: not enough arguments to return, got (number) want (int, int)
      ./issue4215.go:8: too many arguments to return, got (int, number) want ()
      ./issue4215.go:13: not enough arguments to return, got (number) want (int, int, int, int)
      ./issue4215.go:15: not enough arguments to return, got (number, number) want (int, int, int, int)
      ./issue4215.go:21: not enough arguments to return, got (string) want (string, int)
      ./issue4215.go:23: too many arguments to return, got (string, number, bool) want (string, int)
      ./issue4215.go:25: not enough arguments to return, got (string) want (string, int)
      ./issue4215.go:37: not enough arguments to return, got (string) want (S, T, U)
      ./issue4215.go:40: not enough arguments to return, got (*T) want (S, T, U)
      ./issue4215.go:42: too many arguments to return, got (*S, number, number, number, bool) want (S, T, U)
      ./issue4215.go:46: not enough arguments to return, got (string) want (T, string)
      ./issue4215.go:46: too many errors
      
      * Example 2:
      $ cat 6750.go && go run 6750.go
      package main
      
      import "fmt"
      
      func printmany(nums ...int) {
        for i, n := range nums {
          fmt.Printf("%d: %d\n", i, n)
        }
        fmt.Printf("\n")
      }
      
      func main() {
        printmany(1, 2, 3)
        printmany([]int{1, 2, 3}...)
        printmany(1, "abc", []int{2, 3}...)
      }
      ./issue6750.go:15: too many arguments in call to printmany, got (number, string, []int) want (...int)
      
      Change-Id: I6fdce78553ae81770840070e2c975d3e3c83d5d8
      Reviewed-on: https://go-review.googlesource.com/25156
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      2d573eee
  3. 01 Oct, 2016 7 commits
  4. 30 Sep, 2016 13 commits
    • Joe Tsai's avatar
      cmd/doc: perform type grouping for constants and variables · eca4e446
      Joe Tsai authored
      In golang.org/cl/22354, we added functionality to group functions under the
      type that they construct to. In this CL, we extend the same concept to
      constants and variables. This makes the doc tool more consistent with what
      the godoc website does.
      
      $ go doc reflect | egrep "ChanDir|Kind|SelectDir"
      <<<
      // Before:
      const RecvDir ChanDir = 1 << iota ...
      const Invalid Kind = iota ...
      type ChanDir int
      type Kind uint
      type SelectDir int
          func ChanOf(dir ChanDir, t Type) Type
      
      // After:
      type ChanDir int
          const RecvDir ChanDir = 1 << iota ...
      type Kind uint
          const Invalid Kind = iota ...
      type SelectDir int
          const SelectSend SelectDir ...
          func ChanOf(dir ChanDir, t Type) Type
      
      >
      > Furthermore, a fix was made to ensure that the type was printed in constant
      > blocks when the iota was applied on an unexported field.
      >
      > $ go doc reflect SelectSend
      > <<<
      > // Before:
      > const (
      > 	SelectSend    // case Chan <- Send
      > 	SelectRecv    // case <-Chan:
      > 	SelectDefault // default
      > )
      >
      > // After:
      > const (
      > 	SelectSend    SelectDir // case Chan <- Send
      > 	SelectRecv              // case <-Chan:
      > 	SelectDefault           // default
      > )
      
      
      Fixes #16569
      
      Change-Id: I26124c3d19e50caf9742bb936803a665e0fa6512
      Reviewed-on: https://go-review.googlesource.com/25419Reviewed-by: default avatarRob Pike <r@golang.org>
      Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      eca4e446
    • Matt Layher's avatar
      context: discourage use of basic types as keys in WithValue · c5f064ee
      Matt Layher authored
      Fixes #17302
      
      Change-Id: I375d5d4f2714ff415542f4fe56a548e53c5e8ba6
      Reviewed-on: https://go-review.googlesource.com/30134Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      c5f064ee
    • Brad Fitzpatrick's avatar
      reflect: add Swapper func · ca04091f
      Brad Fitzpatrick authored
      Swapper returns a func that swaps two elements in a slice.
      
      Updates #16721
      
      Change-Id: I7f2287a675c10a05019e02b7d62fb870af31216f
      Reviewed-on: https://go-review.googlesource.com/30088
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      ca04091f
    • Brad Fitzpatrick's avatar
      net/http: refactor testing of Request.Body on 0 ContentLength · 9491e7d6
      Brad Fitzpatrick authored
      Code movement only, to look more like the equivalent http2 code, and
      to make an upcoming fix look more obvious.
      
      Updates #16002 (to be fixed once this code is in)
      
      Change-Id: Iaa4f965be14e98f9996e7c4624afe6e19bed1a80
      Reviewed-on: https://go-review.googlesource.com/30087
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      Reviewed-by: default avatarJoe Tsai <thebrokentoaster@gmail.com>
      9491e7d6
    • David Benjamin's avatar
      crypto/tls: Fix c.in.decrypt error handling. · ab6ba994
      David Benjamin authored
      readRecord was not returning early if c.in.decrypt failed and ran
      through the rest of the function. It does set c.in.err, so the various
      checks in the callers do ultimately notice before acting on the result,
      but we should avoid running the rest of the function at all.
      
      Also rename 'err' to 'alertValue' since it isn't actually an error.
      
      Change-Id: I6660924716a85af704bd3fe81521b34766238695
      Reviewed-on: https://go-review.googlesource.com/24709
      Run-TryBot: Adam Langley <agl@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAdam Langley <agl@golang.org>
      ab6ba994
    • Alberto Donizetti's avatar
      cmd/compile: update error messages in Mpint, Mpflt methods · 01661612
      Alberto Donizetti authored
      CL 20909 gave Mpint methods nice go-like names, but it
      didn't update the names in the error strings. Fix them.
      
      Same for a couple of Mpflt methods.
      
      Change-Id: I9c99653d4b922e32fd5ba18aba768a589a4c7869
      Reviewed-on: https://go-review.googlesource.com/30091Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      01661612
    • Michael Munday's avatar
      cmd/compile: improve load/store merging on s390x · 962dc4b4
      Michael Munday authored
      This commit makes the process of load/store merging more incremental
      for both big and little endian operations. It also adds support for
      32-bit shifts (needed to merge 16- and 32-bit loads/stores).
      
      In addition, the merging of little endian stores is now supported.
      Little endian stores are now up to 30 times faster.
      
      Change-Id: Iefdd81eda4a65b335f23c3ff222146540083ad9c
      Reviewed-on: https://go-review.googlesource.com/29956
      Run-TryBot: Michael Munday <munday@ca.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      962dc4b4
    • Alberto Donizetti's avatar
      cmd/compile: delete unused Convconst function · 41fa42b4
      Alberto Donizetti authored
      Convconst is not used in the new backend, and all its callers
      were deleted in CL 29168 (cmd/compile: delete lots of the legacy
      backend). iconv was an helper function for Convconst.
      
      Updates #16357
      
      Change-Id: I65c7345586d7af81cdc2fb09c68f744ffb161a17
      Reviewed-on: https://go-review.googlesource.com/30090Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      41fa42b4
    • Brad Fitzpatrick's avatar
      net/http: update bundled http2, add h2 Transport.IdleConnTimeout tests · 893d6866
      Brad Fitzpatrick authored
      Updates bundled http2 to x/net git rev a333c53 for:
      
         http2: add Transport support for IdleConnTimeout
         https://golang.org/cl/30075
      
      And add tests.
      
      The bundled http2 also includes a change adding a Ping method to
      http2.ClientConn, but that type isn't exposed in the standard
      library. Nevertheless, the code gets compiled and adds a dependency on
      "crypto/rand", requiring an update to go/build's dependency
      test. Because net/http already depends on crypto/tls, which uses
      crypto/rand, it's not really a new dependency.
      
      Fixes #16808
      
      Change-Id: I1ec8666ea74762f27c70a6f30a366a6647f923f7
      Reviewed-on: https://go-review.googlesource.com/30078
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      893d6866
    • David Crawshaw's avatar
      runtime: remove defer from standard cgo call · 44150215
      David Crawshaw authored
      The endcgo function call is currently deferred in case a cgo
      callback into Go panics and unwinds through cgocall. Typical cgo
      calls do not have callbacks into Go, and even fewer panic, so we
      pay the cost of this defer for no typical benefit.
      
      Amazingly, there is another defer on the cgocallback path also used
      to cleanup in case the Go code called by cgo panics. This CL folds
      the first defer into the second, to reduce the cost of typical cgo
      calls.
      
      This reduces the overhead for a no-op cgo call significantly:
      
      	name       old time/op  new time/op  delta
      	CgoNoop-8  93.5ns ± 0%  51.1ns ± 1%  -45.34%  (p=0.016 n=4+5)
      
      The total effect between Go 1.7 and 1.8 is even greater, as CL 29656
      reduced the cost of defer recently. Hopefully a future Go release
      will drop the cost of defer to nothing, making this optimization
      unnecessary. But until then, this is nice.
      
      Change-Id: Id1a5648f687a87001d95bec6842e4054bd20ee4f
      Reviewed-on: https://go-review.googlesource.com/30080
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      44150215
    • Matthew Dempsky's avatar
      runtime, syscall: use FP instead of SP for parameters · 9828b7c4
      Matthew Dempsky authored
      Consistently access function parameters using the FP pseudo-register
      instead of SP (e.g., x+0(FP) instead of x+4(SP) or x+8(SP), depending
      on register size). Two reasons: 1) doc/asm says the SP pseudo-register
      should use negative offsets in the range [-framesize, 0), and 2)
      cmd/vet only validates parameter offsets when indexed from the FP
      pseudo-register.
      
      No binary changes to the compiled object files for any of the affected
      package/OS/arch combinations.
      
      Change-Id: I0efc6079bc7519fcea588c114ec6a39b245d68b0
      Reviewed-on: https://go-review.googlesource.com/30085Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      9828b7c4
    • Matthew Dempsky's avatar
      cmd/compile: eliminate stkdelta · 79db1625
      Matthew Dempsky authored
      At this point in the compiler we haven't assigned Xoffset values for
      PAUTO variables anyway, so just immediately store the stack offsets
      into Xoffset rather than into a global map.
      
      Change-Id: I61eb471c857c8b145fd0895cbd98fd4e8d3c3365
      Reviewed-on: https://go-review.googlesource.com/30081
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      79db1625
    • Matthew Dempsky's avatar
      cmd/compile: split Addrconst out of Naddr · bb2bbfa0
      Matthew Dempsky authored
      There are only three Prog types that we were creating with an OLITERAL
      Node: ATEXT, ATYPE, and AFUNCDATA. ATEXT's value we later overwrite in
      defframe, and ATYPE's we don't even need. AFUNCDATA only needs integer
      constants, so get rid of all the non-int constant logic and skip
      creating a Node representation for the constant.
      
      While here, there are a few other Naddr code paths that are no longer
      needed, so turn those into Fatalfs.
      
      Passes toolstash/buildall.
      
      Change-Id: I4cc9b92c3011890afd4f31ebeba8b1b42b753cab
      Reviewed-on: https://go-review.googlesource.com/30074
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      bb2bbfa0