Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
50a50465
Commit
50a50465
authored
Oct 27, 2014
by
Ian Lance Taylor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
libgo: Update to Go 1.3.3 release.
From-SVN: r216746
parent
fc72cba7
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
336 additions
and
60 deletions
+336
-60
libgo/MERGE
+1
-1
libgo/go/compress/gzip/gzip.go
+2
-1
libgo/go/compress/zlib/writer.go
+2
-1
libgo/go/crypto/rsa/pkcs1v15.go
+28
-15
libgo/go/crypto/rsa/pkcs1v15_test.go
+20
-0
libgo/go/crypto/subtle/constant_time.go
+7
-2
libgo/go/crypto/tls/handshake_server.go
+4
-0
libgo/go/crypto/tls/handshake_server_test.go
+26
-0
libgo/go/crypto/tls/testdata/Server-TLSv12-IssueTicketPreDisable
+87
-0
libgo/go/crypto/tls/testdata/Server-TLSv12-ResumeDisabled
+87
-0
libgo/go/crypto/tls/ticket.go
+2
-1
libgo/go/net/dnsconfig_unix.go
+7
-3
libgo/go/net/fd_unix.go
+14
-4
libgo/go/net/fd_windows.go
+8
-1
libgo/go/net/http/httptest/server_test.go
+1
-0
libgo/go/net/sock_posix.go
+8
-14
libgo/go/net/testdata/resolv.conf
+1
-0
libgo/go/time/format_test.go
+21
-15
libgo/runtime/runtime.c
+10
-2
No files found.
libgo/MERGE
View file @
50a50465
9895f9e36435
f44017549ff9
The first line of this file holds the Mercurial revision number of the
The first line of this file holds the Mercurial revision number of the
last merge done from the master library sources.
last merge done from the master library sources.
libgo/go/compress/gzip/gzip.go
View file @
50a50465
...
@@ -245,7 +245,8 @@ func (z *Writer) Flush() error {
...
@@ -245,7 +245,8 @@ func (z *Writer) Flush() error {
return
z
.
err
return
z
.
err
}
}
// Close closes the Writer. It does not close the underlying io.Writer.
// Close closes the Writer, flushing any unwritten data to the underlying
// io.Writer, but does not close the underlying io.Writer.
func
(
z
*
Writer
)
Close
()
error
{
func
(
z
*
Writer
)
Close
()
error
{
if
z
.
err
!=
nil
{
if
z
.
err
!=
nil
{
return
z
.
err
return
z
.
err
...
...
libgo/go/compress/zlib/writer.go
View file @
50a50465
...
@@ -174,7 +174,8 @@ func (z *Writer) Flush() error {
...
@@ -174,7 +174,8 @@ func (z *Writer) Flush() error {
return
z
.
err
return
z
.
err
}
}
// Calling Close does not close the wrapped io.Writer originally passed to NewWriter.
// Close closes the Writer, flushing any unwritten data to the underlying
// io.Writer, but does not close the underlying io.Writer.
func
(
z
*
Writer
)
Close
()
error
{
func
(
z
*
Writer
)
Close
()
error
{
if
!
z
.
wroteHeader
{
if
!
z
.
wroteHeader
{
z
.
err
=
z
.
writeHeader
()
z
.
err
=
z
.
writeHeader
()
...
...
libgo/go/crypto/rsa/pkcs1v15.go
View file @
50a50465
...
@@ -53,11 +53,14 @@ func DecryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) (out [
...
@@ -53,11 +53,14 @@ func DecryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) (out [
if
err
:=
checkPub
(
&
priv
.
PublicKey
);
err
!=
nil
{
if
err
:=
checkPub
(
&
priv
.
PublicKey
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
valid
,
out
,
err
:=
decryptPKCS1v15
(
rand
,
priv
,
ciphertext
)
valid
,
out
,
index
,
err
:=
decryptPKCS1v15
(
rand
,
priv
,
ciphertext
)
if
err
==
nil
&&
valid
==
0
{
if
err
!=
nil
{
err
=
ErrDecryptio
n
retur
n
}
}
if
valid
==
0
{
return
nil
,
ErrDecryption
}
out
=
out
[
index
:
]
return
return
}
}
...
@@ -80,21 +83,32 @@ func DecryptPKCS1v15SessionKey(rand io.Reader, priv *PrivateKey, ciphertext []by
...
@@ -80,21 +83,32 @@ func DecryptPKCS1v15SessionKey(rand io.Reader, priv *PrivateKey, ciphertext []by
}
}
k
:=
(
priv
.
N
.
BitLen
()
+
7
)
/
8
k
:=
(
priv
.
N
.
BitLen
()
+
7
)
/
8
if
k
-
(
len
(
key
)
+
3
+
8
)
<
0
{
if
k
-
(
len
(
key
)
+
3
+
8
)
<
0
{
err
=
ErrDecryption
return
ErrDecryption
return
}
}
valid
,
msg
,
err
:=
decryptPKCS1v15
(
rand
,
priv
,
ciphertext
)
valid
,
em
,
index
,
err
:=
decryptPKCS1v15
(
rand
,
priv
,
ciphertext
)
if
err
!=
nil
{
if
err
!=
nil
{
return
return
}
}
valid
&=
subtle
.
ConstantTimeEq
(
int32
(
len
(
msg
)),
int32
(
len
(
key
)))
if
len
(
em
)
!=
k
{
subtle
.
ConstantTimeCopy
(
valid
,
key
,
msg
)
// This should be impossible because decryptPKCS1v15 always
// returns the full slice.
return
ErrDecryption
}
valid
&=
subtle
.
ConstantTimeEq
(
int32
(
len
(
em
)
-
index
),
int32
(
len
(
key
)))
subtle
.
ConstantTimeCopy
(
valid
,
key
,
em
[
len
(
em
)
-
len
(
key
)
:
])
return
return
}
}
func
decryptPKCS1v15
(
rand
io
.
Reader
,
priv
*
PrivateKey
,
ciphertext
[]
byte
)
(
valid
int
,
msg
[]
byte
,
err
error
)
{
// decryptPKCS1v15 decrypts ciphertext using priv and blinds the operation if
// rand is not nil. It returns one or zero in valid that indicates whether the
// plaintext was correctly structured. In either case, the plaintext is
// returned in em so that it may be read independently of whether it was valid
// in order to maintain constant memory access patterns. If the plaintext was
// valid then index contains the index of the original message in em.
func
decryptPKCS1v15
(
rand
io
.
Reader
,
priv
*
PrivateKey
,
ciphertext
[]
byte
)
(
valid
int
,
em
[]
byte
,
index
int
,
err
error
)
{
k
:=
(
priv
.
N
.
BitLen
()
+
7
)
/
8
k
:=
(
priv
.
N
.
BitLen
()
+
7
)
/
8
if
k
<
11
{
if
k
<
11
{
err
=
ErrDecryption
err
=
ErrDecryption
...
@@ -107,7 +121,7 @@ func decryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) (valid
...
@@ -107,7 +121,7 @@ func decryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) (valid
return
return
}
}
em
:
=
leftPad
(
m
.
Bytes
(),
k
)
em
=
leftPad
(
m
.
Bytes
(),
k
)
firstByteIsZero
:=
subtle
.
ConstantTimeByteEq
(
em
[
0
],
0
)
firstByteIsZero
:=
subtle
.
ConstantTimeByteEq
(
em
[
0
],
0
)
secondByteIsTwo
:=
subtle
.
ConstantTimeByteEq
(
em
[
1
],
2
)
secondByteIsTwo
:=
subtle
.
ConstantTimeByteEq
(
em
[
1
],
2
)
...
@@ -115,8 +129,7 @@ func decryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) (valid
...
@@ -115,8 +129,7 @@ func decryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) (valid
// octets, followed by a 0, followed by the message.
// octets, followed by a 0, followed by the message.
// lookingForIndex: 1 iff we are still looking for the zero.
// lookingForIndex: 1 iff we are still looking for the zero.
// index: the offset of the first zero byte.
// index: the offset of the first zero byte.
var
lookingForIndex
,
index
int
lookingForIndex
:=
1
lookingForIndex
=
1
for
i
:=
2
;
i
<
len
(
em
);
i
++
{
for
i
:=
2
;
i
<
len
(
em
);
i
++
{
equals0
:=
subtle
.
ConstantTimeByteEq
(
em
[
i
],
0
)
equals0
:=
subtle
.
ConstantTimeByteEq
(
em
[
i
],
0
)
...
@@ -129,8 +142,8 @@ func decryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) (valid
...
@@ -129,8 +142,8 @@ func decryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) (valid
validPS
:=
subtle
.
ConstantTimeLessOrEq
(
2
+
8
,
index
)
validPS
:=
subtle
.
ConstantTimeLessOrEq
(
2
+
8
,
index
)
valid
=
firstByteIsZero
&
secondByteIsTwo
&
(
^
lookingForIndex
&
1
)
&
validPS
valid
=
firstByteIsZero
&
secondByteIsTwo
&
(
^
lookingForIndex
&
1
)
&
validPS
msg
=
em
[
index
+
1
:
]
index
=
subtle
.
ConstantTimeSelect
(
valid
,
index
+
1
,
0
)
return
return
valid
,
em
,
index
,
nil
}
}
// nonZeroRandomBytes fills the given slice with non-zero random octets.
// nonZeroRandomBytes fills the given slice with non-zero random octets.
...
...
libgo/go/crypto/rsa/pkcs1v15_test.go
View file @
50a50465
...
@@ -227,6 +227,26 @@ func TestUnpaddedSignature(t *testing.T) {
...
@@ -227,6 +227,26 @@ func TestUnpaddedSignature(t *testing.T) {
}
}
}
}
func
TestShortSessionKey
(
t
*
testing
.
T
)
{
// This tests that attempting to decrypt a session key where the
// ciphertext is too small doesn't run outside the array bounds.
ciphertext
,
err
:=
EncryptPKCS1v15
(
rand
.
Reader
,
&
rsaPrivateKey
.
PublicKey
,
[]
byte
{
1
})
if
err
!=
nil
{
t
.
Fatalf
(
"Failed to encrypt short message: %s"
,
err
)
}
var
key
[
32
]
byte
if
err
:=
DecryptPKCS1v15SessionKey
(
nil
,
rsaPrivateKey
,
ciphertext
,
key
[
:
]);
err
!=
nil
{
t
.
Fatalf
(
"Failed to decrypt short message: %s"
,
err
)
}
for
_
,
v
:=
range
key
{
if
v
!=
0
{
t
.
Fatal
(
"key was modified when ciphertext was invalid"
)
}
}
}
// In order to generate new test vectors you'll need the PEM form of this key:
// In order to generate new test vectors you'll need the PEM form of this key:
// -----BEGIN RSA PRIVATE KEY-----
// -----BEGIN RSA PRIVATE KEY-----
// MIIBOgIBAAJBALKZD0nEffqM1ACuak0bijtqE2QrI/KLADv7l3kK3ppMyCuLKoF0
// MIIBOgIBAAJBALKZD0nEffqM1ACuak0bijtqE2QrI/KLADv7l3kK3ppMyCuLKoF0
...
...
libgo/go/crypto/subtle/constant_time.go
View file @
50a50465
...
@@ -49,9 +49,14 @@ func ConstantTimeEq(x, y int32) int {
...
@@ -49,9 +49,14 @@ func ConstantTimeEq(x, y int32) int {
return
int
(
z
&
1
)
return
int
(
z
&
1
)
}
}
// ConstantTimeCopy copies the contents of y into x iff v == 1. If v == 0, x is left unchanged.
// ConstantTimeCopy copies the contents of y into x (a slice of equal length)
// Its behavior is undefined if v takes any other value.
// if v == 1. If v == 0, x is left unchanged. Its behavior is undefined if v
// takes any other value.
func
ConstantTimeCopy
(
v
int
,
x
,
y
[]
byte
)
{
func
ConstantTimeCopy
(
v
int
,
x
,
y
[]
byte
)
{
if
len
(
x
)
!=
len
(
y
)
{
panic
(
"subtle: slices have different lengths"
)
}
xmask
:=
byte
(
v
-
1
)
xmask
:=
byte
(
v
-
1
)
ymask
:=
byte
(
^
(
v
-
1
))
ymask
:=
byte
(
^
(
v
-
1
))
for
i
:=
0
;
i
<
len
(
x
);
i
++
{
for
i
:=
0
;
i
<
len
(
x
);
i
++
{
...
...
libgo/go/crypto/tls/handshake_server.go
View file @
50a50465
...
@@ -214,6 +214,10 @@ Curves:
...
@@ -214,6 +214,10 @@ Curves:
func
(
hs
*
serverHandshakeState
)
checkForResumption
()
bool
{
func
(
hs
*
serverHandshakeState
)
checkForResumption
()
bool
{
c
:=
hs
.
c
c
:=
hs
.
c
if
c
.
config
.
SessionTicketsDisabled
{
return
false
}
var
ok
bool
var
ok
bool
if
hs
.
sessionState
,
ok
=
c
.
decryptTicket
(
hs
.
clientHello
.
sessionTicket
);
!
ok
{
if
hs
.
sessionState
,
ok
=
c
.
decryptTicket
(
hs
.
clientHello
.
sessionTicket
);
!
ok
{
return
false
return
false
...
...
libgo/go/crypto/tls/handshake_server_test.go
View file @
50a50465
...
@@ -557,6 +557,32 @@ func TestResumption(t *testing.T) {
...
@@ -557,6 +557,32 @@ func TestResumption(t *testing.T) {
runServerTestTLS12
(
t
,
test
)
runServerTestTLS12
(
t
,
test
)
}
}
func
TestResumptionDisabled
(
t
*
testing
.
T
)
{
sessionFilePath
:=
tempFile
(
""
)
defer
os
.
Remove
(
sessionFilePath
)
config
:=
*
testConfig
test
:=
&
serverTest
{
name
:
"IssueTicketPreDisable"
,
command
:
[]
string
{
"openssl"
,
"s_client"
,
"-cipher"
,
"RC4-SHA"
,
"-sess_out"
,
sessionFilePath
},
config
:
&
config
,
}
runServerTestTLS12
(
t
,
test
)
config
.
SessionTicketsDisabled
=
true
test
=
&
serverTest
{
name
:
"ResumeDisabled"
,
command
:
[]
string
{
"openssl"
,
"s_client"
,
"-cipher"
,
"RC4-SHA"
,
"-sess_in"
,
sessionFilePath
},
config
:
&
config
,
}
runServerTestTLS12
(
t
,
test
)
// One needs to manually confirm that the handshake in the golden data
// file for ResumeDisabled does not include a resumption handshake.
}
// cert.pem and key.pem were generated with generate_cert.go
// cert.pem and key.pem were generated with generate_cert.go
// Thus, they have no ExtKeyUsage fields and trigger an error
// Thus, they have no ExtKeyUsage fields and trigger an error
// when verification is turned on.
// when verification is turned on.
...
...
libgo/go/crypto/tls/testdata/Server-TLSv12-IssueTicketPreDisable
0 → 100644
View file @
50a50465
>>> Flow 1 (client to server)
00000000 16 03 01 00 60 01 00 00 5c 03 03 54 23 54 02 17 |....`...\..T#T..|
00000010 f3 53 13 3d 48 88 c3 19 b9 d1 3d 33 7f f5 99 56 |.S.=H.....=3...V|
00000020 04 71 1b d9 d5 64 8a 0d 4a 54 00 00 00 04 00 05 |.q...d..JT......|
00000030 00 ff 01 00 00 2f 00 23 00 00 00 0d 00 22 00 20 |...../.#.....". |
00000040 06 01 06 02 06 03 05 01 05 02 05 03 04 01 04 02 |................|
00000050 04 03 03 01 03 02 03 03 02 01 02 02 02 03 01 01 |................|
00000060 00 0f 00 01 01 |.....|
>>> Flow 2 (server to client)
00000000 16 03 03 00 35 02 00 00 31 03 03 00 00 00 00 00 |....5...1.......|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 |................|
00000030 09 00 23 00 00 ff 01 00 01 00 16 03 03 02 be 0b |..#.............|
00000040 00 02 ba 00 02 b7 00 02 b4 30 82 02 b0 30 82 02 |.........0...0..|
00000050 19 a0 03 02 01 02 02 09 00 85 b0 bb a4 8a 7f b8 |................|
00000060 ca 30 0d 06 09 2a 86 48 86 f7 0d 01 01 05 05 00 |.0...*.H........|
00000070 30 45 31 0b 30 09 06 03 55 04 06 13 02 41 55 31 |0E1.0...U....AU1|
00000080 13 30 11 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 |.0...U....Some-S|
00000090 74 61 74 65 31 21 30 1f 06 03 55 04 0a 13 18 49 |tate1!0...U....I|
000000a0 6e 74 65 72 6e 65 74 20 57 69 64 67 69 74 73 20 |nternet Widgits |
000000b0 50 74 79 20 4c 74 64 30 1e 17 0d 31 30 30 34 32 |Pty Ltd0...10042|
000000c0 34 30 39 30 39 33 38 5a 17 0d 31 31 30 34 32 34 |4090938Z..110424|
000000d0 30 39 30 39 33 38 5a 30 45 31 0b 30 09 06 03 55 |090938Z0E1.0...U|
000000e0 04 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 |....AU1.0...U...|
000000f0 0a 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 |.Some-State1!0..|
00000100 03 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 |.U....Internet W|
00000110 69 64 67 69 74 73 20 50 74 79 20 4c 74 64 30 81 |idgits Pty Ltd0.|
00000120 9f 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 |.0...*.H........|
00000130 03 81 8d 00 30 81 89 02 81 81 00 bb 79 d6 f5 17 |....0.......y...|
00000140 b5 e5 bf 46 10 d0 dc 69 be e6 2b 07 43 5a d0 03 |...F...i..+.CZ..|
00000150 2d 8a 7a 43 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 |-.zC...R..eL,x.#|
00000160 8c b5 b4 82 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 |........;~b.,.3.|
00000170 fe 12 5c 7a 56 fc f5 06 bf fa 58 7b 26 3f b5 cd |..\zV.....X{&?..|
00000180 04 d3 d0 c9 21 96 4a c7 f4 54 9f 5a bf ef 42 71 |....!.J..T.Z..Bq|
00000190 00 fe 18 99 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e |......~.}}..9...|
000001a0 db 51 c9 7c e3 c0 4c 3b 32 66 01 cf af b1 1d b8 |.Q.|..L;2f......|
000001b0 71 9a 1d db db 89 6b ae da 2d 79 02 03 01 00 01 |q.....k..-y.....|
000001c0 a3 81 a7 30 81 a4 30 1d 06 03 55 1d 0e 04 16 04 |...0..0...U.....|
000001d0 14 b1 ad e2 85 5a cf cb 28 db 69 ce 23 69 de d3 |.....Z..(.i.#i..|
000001e0 26 8e 18 88 39 30 75 06 03 55 1d 23 04 6e 30 6c |&...90u..U.#.n0l|
000001f0 80 14 b1 ad e2 85 5a cf cb 28 db 69 ce 23 69 de |......Z..(.i.#i.|
00000200 d3 26 8e 18 88 39 a1 49 a4 47 30 45 31 0b 30 09 |.&...9.I.G0E1.0.|
00000210 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 55 |..U....AU1.0...U|
00000220 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 21 |....Some-State1!|
00000230 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e 65 |0...U....Interne|
00000240 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c 74 |t Widgits Pty Lt|
00000250 64 82 09 00 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 |d...........0...|
00000260 55 1d 13 04 05 30 03 01 01 ff 30 0d 06 09 2a 86 |U....0....0...*.|
00000270 48 86 f7 0d 01 01 05 05 00 03 81 81 00 08 6c 45 |H.............lE|
00000280 24 c7 6b b1 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a |$.k.Y..R.......z|
00000290 64 75 b5 5a 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f |du.Z.f..+...f..O|
000002a0 38 b3 6e 60 d3 92 fd f7 41 08 b5 25 13 b1 18 7a |8.n`....A..%...z|
000002b0 24 fb 30 1d ba ed 98 b9 17 ec e7 d7 31 59 db 95 |$.0.........1Y..|
000002c0 d3 1d 78 ea 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 |..x.PV\..Z-Z_3..|
000002d0 d8 c9 75 90 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f |..u....R...... _|
000002e0 f2 a0 1c a3 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d |..........W.p.&m|
000002f0 71 99 9b 26 6e 38 50 29 6c 90 a7 bd d9 16 03 03 |q..&n8P)l.......|
00000300 00 04 0e 00 00 00 |......|
>>> Flow 3 (client to server)
00000000 16 03 03 00 86 10 00 00 82 00 80 27 e9 a4 f7 e7 |...........'....|
00000010 df 25 de 84 8c 1f d6 e6 c3 11 28 55 9a c1 91 37 |.%........(U...7|
00000020 84 f5 ba f8 80 0d ca 50 cb 1e 72 f7 97 6f c2 b2 |.......P..r..o..|
00000030 04 4d 13 7c e0 6e a0 1f 91 e1 38 1b a2 c0 55 16 |.M.|.n....8...U.|
00000040 7f 29 fc ed 1c 1a cf 72 14 c3 00 c1 dd 36 36 af |.).....r.....66.|
00000050 a6 e4 a8 be ba ec 13 d0 1e d0 1d fd e1 5b 27 fd |.............['.|
00000060 9a da 2e 12 c8 b0 b9 c2 b9 76 ec 7f 3c 98 b6 63 |.........v..<..c|
00000070 bc da f0 07 7a 3d e7 61 f4 2f 12 80 3b f9 3b cc |....z=.a./..;.;.|
00000080 05 c8 2f 7e 28 b2 73 bf 97 61 29 14 03 03 00 01 |../~(.s..a).....|
00000090 01 16 03 03 00 24 17 59 a9 45 53 46 33 96 50 dd |.....$.Y.ESF3.P.|
000000a0 3e 23 aa 91 38 f8 56 4a 2f 1a f2 b1 44 9b ce 17 |>#..8.VJ/...D...|
000000b0 6b 8a 89 76 bc 67 b8 8b ba 90 |k..v.g....|
>>> Flow 4 (server to client)
00000000 16 03 03 00 72 04 00 00 6e 00 00 00 00 00 68 00 |....r...n.....h.|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 65 |...............e|
00000020 ea 4b d1 ef ba 2d db 0c ba 9a d4 20 76 57 c8 ec |.K...-..... vW..|
00000030 dc 2d 77 fb fb 3b 93 5f 53 e0 14 4f 90 fb d6 55 |.-w..;._S..O...U|
00000040 57 8c 8d 0d 25 ea 5d 0d f2 91 e5 12 22 12 ec 7b |W...%.]....."..{|
00000050 5f b6 6e fd 07 59 23 24 fc b1 97 ca ea 56 a5 c2 |_.n..Y#$.....V..|
00000060 a0 e4 9e 99 64 f2 64 d0 75 7a 46 63 e3 dc 21 ed |....d.d.uzFc..!.|
00000070 78 56 e9 e1 ab 66 80 14 03 03 00 01 01 16 03 03 |xV...f..........|
00000080 00 24 fc 14 68 07 17 1f df b7 84 cb fd c1 e0 e4 |.$..h...........|
00000090 f2 1a ea 34 b5 00 7f 70 be c8 1c 0a d6 55 e3 57 |...4...p.....U.W|
000000a0 50 4e 6d 7d 8a 5d 17 03 03 00 21 24 27 50 40 c1 |PNm}.]....!$'P@.|
000000b0 c5 bd c7 9f 95 d9 ba 2e 7b 0e db ea a7 31 81 05 |........{....1..|
000000c0 75 43 b1 63 cf b8 55 92 ef 76 98 a9 15 03 03 00 |uC.c..U..v......|
000000d0 16 d7 ea 3c 79 e7 a6 2f 61 39 ec 4e 95 86 48 5e |...<y../a9.N..H^|
000000e0 75 a0 9e 41 42 89 67 |u..AB.g|
libgo/go/crypto/tls/testdata/Server-TLSv12-ResumeDisabled
0 → 100644
View file @
50a50465
>>> Flow 1 (client to server)
00000000 16 03 01 00 e8 01 00 00 e4 03 03 54 23 54 02 a5 |...........T#T..|
00000010 10 11 0f 6d e5 2d 2f e8 bb 52 b1 38 3f 65 01 43 |...m.-/..R.8?e.C|
00000020 36 cc 48 f6 09 22 a1 85 20 28 3c 20 35 8b fe 7a |6.H..".. (< 5..z|
00000030 41 3b 59 3a 5d b9 b3 21 f0 62 e9 0d 7b af f5 5d |A;Y:]..!.b..{..]|
00000040 fa 65 1a 40 c8 ca cd 74 8c ef d2 fb 00 04 00 05 |.e.@...t........|
00000050 00 ff 01 00 00 97 00 23 00 68 00 00 00 00 00 00 |.......#.h......|
00000060 00 00 00 00 00 00 00 00 00 00 65 ea 4b d1 ef ba |..........e.K...|
00000070 2d db 0c ba 9a d4 20 76 57 c8 ec dc 2d 77 fb fb |-..... vW...-w..|
00000080 3b 93 5f 53 e0 14 4f 90 fb d6 55 57 8c 8d 0d 25 |;._S..O...UW...%|
00000090 ea 5d 0d f2 91 e5 12 22 12 ec 7b 5f b6 6e fd 07 |.]....."..{_.n..|
000000a0 59 23 24 fc b1 97 ca ea 56 a5 c2 a0 e4 9e 99 64 |Y#$.....V......d|
000000b0 f2 64 d0 75 7a 46 63 e3 dc 21 ed 78 56 e9 e1 ab |.d.uzFc..!.xV...|
000000c0 66 80 00 0d 00 22 00 20 06 01 06 02 06 03 05 01 |f....". ........|
000000d0 05 02 05 03 04 01 04 02 04 03 03 01 03 02 03 03 |................|
000000e0 02 01 02 02 02 03 01 01 00 0f 00 01 01 |.............|
>>> Flow 2 (server to client)
00000000 16 03 03 00 31 02 00 00 2d 03 03 00 00 00 00 00 |....1...-.......|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 |................|
00000030 05 ff 01 00 01 00 16 03 03 02 be 0b 00 02 ba 00 |................|
00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......|
00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..|
00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.|
00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..|
00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State|
00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter|
000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty |
000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090|
000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909|
000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....|
000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som|
000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..|
00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi|
00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..|
00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............|
00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F|
00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC|
00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....|
00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z|
00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......|
00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....|
00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.||
000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...|
000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0|
000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........|
000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...|
000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....|
000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..|
00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.|
00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....|
00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...|
00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi|
00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...|
00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...|
00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...|
00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.|
00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z|
00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`|
000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.|
000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.|
000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.|
000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....|
000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&|
000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 03 00 04 0e 00 |n8P)l...........|
00000300 00 00 |..|
>>> Flow 3 (client to server)
00000000 16 03 03 00 86 10 00 00 82 00 80 ae 02 dd 1f 1a |................|
00000010 86 83 f5 2f 82 46 4b 29 58 aa a1 b3 56 8b 4e 40 |.../.FK)X...V.N@|
00000020 ef 23 65 67 ad 48 e5 e1 fd ae dd bf 68 fd bd a6 |.#eg.H......h...|
00000030 13 a0 7e 05 ab f7 20 e1 6a 4e d1 37 93 08 1d c9 |..~... .jN.7....|
00000040 37 e0 b5 34 28 bf 20 45 45 da 0f 7e 51 a7 c6 ae |7..4(. EE..~Q...|
00000050 61 6c 07 1b 73 ef da 6e 25 c4 ed be e3 3f da ae |al..s..n%....?..|
00000060 cd 3c 17 9c 2e ee fb 47 9d b3 a1 b2 c3 5d e0 83 |.<.....G.....]..|
00000070 74 20 37 2d 72 d6 d0 4d 58 0e 26 1c 50 22 95 08 |t 7-r..MX.&.P"..|
00000080 7d e0 5f 86 99 9e 2c 2e a7 a0 7f 14 03 03 00 01 |}._...,.........|
00000090 01 16 03 03 00 24 a2 ab 41 25 a5 cf 04 18 1d 98 |.....$..A%......|
000000a0 88 6c 59 21 86 33 54 f4 35 b4 21 6e a5 29 d5 6e |.lY!.3T.5.!n.).n|
000000b0 3d 08 72 b0 af 46 b5 8f 6b 86 |=.r..F..k.|
>>> Flow 4 (server to client)
00000000 14 03 03 00 01 01 16 03 03 00 24 59 20 4d c2 17 |..........$Y M..|
00000010 8b 3c 9b 33 d9 f9 ef fb 80 18 1f 67 a7 58 12 89 |.<.3.......g.X..|
00000020 4e 73 0f 2d 7b e6 c4 a6 79 73 01 da 22 e8 54 17 |Ns.-{...ys..".T.|
00000030 03 03 00 21 36 ca 64 0f 4a 12 a5 50 3d 97 bb 39 |...!6.d.J..P=..9|
00000040 02 fc ed d1 82 6a 9a 2e 21 79 f6 e1 b3 cc 32 db |.....j..!y....2.|
00000050 0f 5d b3 fb a5 15 03 03 00 16 51 f4 be 57 7a df |.]........Q..Wz.|
00000060 f1 f2 bd b5 51 5e 45 80 be 0b 9a 0c d1 19 3c 79 |....Q^E.......<y|
libgo/go/crypto/tls/ticket.go
View file @
50a50465
...
@@ -153,7 +153,8 @@ func (c *Conn) encryptTicket(state *sessionState) ([]byte, error) {
...
@@ -153,7 +153,8 @@ func (c *Conn) encryptTicket(state *sessionState) ([]byte, error) {
}
}
func
(
c
*
Conn
)
decryptTicket
(
encrypted
[]
byte
)
(
*
sessionState
,
bool
)
{
func
(
c
*
Conn
)
decryptTicket
(
encrypted
[]
byte
)
(
*
sessionState
,
bool
)
{
if
len
(
encrypted
)
<
aes
.
BlockSize
+
sha256
.
Size
{
if
c
.
config
.
SessionTicketsDisabled
||
len
(
encrypted
)
<
aes
.
BlockSize
+
sha256
.
Size
{
return
nil
,
false
return
nil
,
false
}
}
...
...
libgo/go/net/dnsconfig_unix.go
View file @
50a50465
...
@@ -75,19 +75,19 @@ func dnsReadConfig(filename string) (*dnsConfig, error) {
...
@@ -75,19 +75,19 @@ func dnsReadConfig(filename string) (*dnsConfig, error) {
for
i
:=
1
;
i
<
len
(
f
);
i
++
{
for
i
:=
1
;
i
<
len
(
f
);
i
++
{
s
:=
f
[
i
]
s
:=
f
[
i
]
switch
{
switch
{
case
len
(
s
)
>=
6
&&
s
[
0
:
6
]
==
"ndots:"
:
case
hasPrefix
(
s
,
"ndots:"
)
:
n
,
_
,
_
:=
dtoi
(
s
,
6
)
n
,
_
,
_
:=
dtoi
(
s
,
6
)
if
n
<
1
{
if
n
<
1
{
n
=
1
n
=
1
}
}
conf
.
ndots
=
n
conf
.
ndots
=
n
case
len
(
s
)
>=
8
&&
s
[
0
:
8
]
==
"timeout:"
:
case
hasPrefix
(
s
,
"timeout:"
)
:
n
,
_
,
_
:=
dtoi
(
s
,
8
)
n
,
_
,
_
:=
dtoi
(
s
,
8
)
if
n
<
1
{
if
n
<
1
{
n
=
1
n
=
1
}
}
conf
.
timeout
=
n
conf
.
timeout
=
n
case
len
(
s
)
>=
8
&&
s
[
0
:
9
]
==
"attempts:"
:
case
hasPrefix
(
s
,
"attempts:"
)
:
n
,
_
,
_
:=
dtoi
(
s
,
9
)
n
,
_
,
_
:=
dtoi
(
s
,
9
)
if
n
<
1
{
if
n
<
1
{
n
=
1
n
=
1
...
@@ -103,3 +103,7 @@ func dnsReadConfig(filename string) (*dnsConfig, error) {
...
@@ -103,3 +103,7 @@ func dnsReadConfig(filename string) (*dnsConfig, error) {
return
conf
,
nil
return
conf
,
nil
}
}
func
hasPrefix
(
s
,
prefix
string
)
bool
{
return
len
(
s
)
>=
len
(
prefix
)
&&
s
[
:
len
(
prefix
)]
==
prefix
}
libgo/go/net/fd_unix.go
View file @
50a50465
...
@@ -68,16 +68,19 @@ func (fd *netFD) name() string {
...
@@ -68,16 +68,19 @@ func (fd *netFD) name() string {
return
fd
.
net
+
":"
+
ls
+
"->"
+
rs
return
fd
.
net
+
":"
+
ls
+
"->"
+
rs
}
}
func
(
fd
*
netFD
)
connect
(
la
,
ra
syscall
.
Sockaddr
)
error
{
func
(
fd
*
netFD
)
connect
(
la
,
ra
syscall
.
Sockaddr
,
deadline
time
.
Time
)
error
{
// Do not need to call fd.writeLock here,
// Do not need to call fd.writeLock here,
// because fd is not yet accessible to user,
// because fd is not yet accessible to user,
// so no concurrent operations are possible.
// so no concurrent operations are possible.
if
err
:=
fd
.
pd
.
PrepareWrite
();
err
!=
nil
{
return
err
}
switch
err
:=
syscall
.
Connect
(
fd
.
sysfd
,
ra
);
err
{
switch
err
:=
syscall
.
Connect
(
fd
.
sysfd
,
ra
);
err
{
case
syscall
.
EINPROGRESS
,
syscall
.
EALREADY
,
syscall
.
EINTR
:
case
syscall
.
EINPROGRESS
,
syscall
.
EALREADY
,
syscall
.
EINTR
:
case
nil
,
syscall
.
EISCONN
:
case
nil
,
syscall
.
EISCONN
:
if
!
deadline
.
IsZero
()
&&
deadline
.
Before
(
time
.
Now
())
{
return
errTimeout
}
if
err
:=
fd
.
init
();
err
!=
nil
{
return
err
}
return
nil
return
nil
case
syscall
.
EINVAL
:
case
syscall
.
EINVAL
:
// On Solaris we can see EINVAL if the socket has
// On Solaris we can see EINVAL if the socket has
...
@@ -92,6 +95,13 @@ func (fd *netFD) connect(la, ra syscall.Sockaddr) error {
...
@@ -92,6 +95,13 @@ func (fd *netFD) connect(la, ra syscall.Sockaddr) error {
default
:
default
:
return
err
return
err
}
}
if
err
:=
fd
.
init
();
err
!=
nil
{
return
err
}
if
!
deadline
.
IsZero
()
{
fd
.
setWriteDeadline
(
deadline
)
defer
fd
.
setWriteDeadline
(
noDeadline
)
}
for
{
for
{
// Performing multiple connect system calls on a
// Performing multiple connect system calls on a
// non-blocking socket under Unix variants does not
// non-blocking socket under Unix variants does not
...
...
libgo/go/net/fd_windows.go
View file @
50a50465
...
@@ -313,10 +313,17 @@ func (fd *netFD) setAddr(laddr, raddr Addr) {
...
@@ -313,10 +313,17 @@ func (fd *netFD) setAddr(laddr, raddr Addr) {
runtime
.
SetFinalizer
(
fd
,
(
*
netFD
)
.
Close
)
runtime
.
SetFinalizer
(
fd
,
(
*
netFD
)
.
Close
)
}
}
func
(
fd
*
netFD
)
connect
(
la
,
ra
syscall
.
Sockaddr
)
error
{
func
(
fd
*
netFD
)
connect
(
la
,
ra
syscall
.
Sockaddr
,
deadline
time
.
Time
)
error
{
// Do not need to call fd.writeLock here,
// Do not need to call fd.writeLock here,
// because fd is not yet accessible to user,
// because fd is not yet accessible to user,
// so no concurrent operations are possible.
// so no concurrent operations are possible.
if
err
:=
fd
.
init
();
err
!=
nil
{
return
err
}
if
!
deadline
.
IsZero
()
{
fd
.
setWriteDeadline
(
deadline
)
defer
fd
.
setWriteDeadline
(
noDeadline
)
}
if
!
canUseConnectEx
(
fd
.
net
)
{
if
!
canUseConnectEx
(
fd
.
net
)
{
return
syscall
.
Connect
(
fd
.
sysfd
,
ra
)
return
syscall
.
Connect
(
fd
.
sysfd
,
ra
)
}
}
...
...
libgo/go/net/http/httptest/server_test.go
View file @
50a50465
...
@@ -30,6 +30,7 @@ func TestServer(t *testing.T) {
...
@@ -30,6 +30,7 @@ func TestServer(t *testing.T) {
}
}
func
TestIssue7264
(
t
*
testing
.
T
)
{
func
TestIssue7264
(
t
*
testing
.
T
)
{
t
.
Skip
(
"broken test - removed at tip"
)
for
i
:=
0
;
i
<
1000
;
i
++
{
for
i
:=
0
;
i
<
1000
;
i
++
{
func
()
{
func
()
{
inHandler
:=
make
(
chan
bool
,
1
)
inHandler
:=
make
(
chan
bool
,
1
)
...
...
libgo/go/net/sock_posix.go
View file @
50a50465
...
@@ -107,24 +107,18 @@ func (fd *netFD) dial(laddr, raddr sockaddr, deadline time.Time, toAddr func(sys
...
@@ -107,24 +107,18 @@ func (fd *netFD) dial(laddr, raddr sockaddr, deadline time.Time, toAddr func(sys
}
}
}
}
}
}
if
err
:=
fd
.
init
();
err
!=
nil
{
return
err
}
var
rsa
syscall
.
Sockaddr
var
rsa
syscall
.
Sockaddr
if
raddr
!=
nil
{
if
raddr
!=
nil
{
if
rsa
,
err
=
raddr
.
sockaddr
(
fd
.
family
);
err
!=
nil
{
if
rsa
,
err
=
raddr
.
sockaddr
(
fd
.
family
);
err
!=
nil
{
return
err
return
err
}
else
if
rsa
!=
nil
{
}
if
!
deadline
.
IsZero
()
{
if
err
:=
fd
.
connect
(
lsa
,
rsa
,
deadline
);
err
!=
nil
{
fd
.
setWriteDeadline
(
deadline
)
return
err
}
}
if
err
:=
fd
.
connect
(
lsa
,
rsa
);
err
!=
nil
{
fd
.
isConnected
=
true
return
err
}
else
{
}
if
err
:=
fd
.
init
();
err
!=
nil
{
fd
.
isConnected
=
true
return
err
if
!
deadline
.
IsZero
()
{
fd
.
setWriteDeadline
(
noDeadline
)
}
}
}
}
}
lsa
,
_
=
syscall
.
Getsockname
(
fd
.
sysfd
)
lsa
,
_
=
syscall
.
Getsockname
(
fd
.
sysfd
)
...
...
libgo/go/net/testdata/resolv.conf
View file @
50a50465
...
@@ -3,3 +3,4 @@
...
@@ -3,3 +3,4 @@
domain
Home
domain
Home
nameserver
192
.
168
.
1
.
1
nameserver
192
.
168
.
1
.
1
options
ndots
:
5
timeout
:
10
attempts
:
3
rotate
options
ndots
:
5
timeout
:
10
attempts
:
3
rotate
options
attempts
3
libgo/go/time/format_test.go
View file @
50a50465
...
@@ -183,39 +183,45 @@ func TestParse(t *testing.T) {
...
@@ -183,39 +183,45 @@ func TestParse(t *testing.T) {
}
}
}
}
func
TestParseInSydney
(
t
*
testing
.
T
)
{
func
TestParseInLocation
(
t
*
testing
.
T
)
{
loc
,
err
:=
LoadLocation
(
"Australia/Sydney"
)
// Check that Parse (and ParseInLocation) understand that
// Feb 01 AST (Arabia Standard Time) and Feb 01 AST (Atlantic Standard Time)
// are in different time zones even though both are called AST
baghdad
,
err
:=
LoadLocation
(
"Asia/Baghdad"
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
// Check that Parse (and ParseInLocation) understand
t1
,
err
:=
ParseInLocation
(
"Jan 02 2006 MST"
,
"Feb 01 2013 AST"
,
baghdad
)
// that Feb EST and Aug EST are different time zones in Sydney
// even though both are called EST.
t1
,
err
:=
ParseInLocation
(
"Jan 02 2006 MST"
,
"Feb 01 2013 EST"
,
loc
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
t2
:=
Date
(
2013
,
February
,
1
,
00
,
00
,
00
,
0
,
loc
)
t2
:=
Date
(
2013
,
February
,
1
,
00
,
00
,
00
,
0
,
baghdad
)
if
t1
!=
t2
{
if
t1
!=
t2
{
t
.
Fatalf
(
"ParseInLocation(Feb 01 2013
EST, Sydney
) = %v, want %v"
,
t1
,
t2
)
t
.
Fatalf
(
"ParseInLocation(Feb 01 2013
AST, Baghdad
) = %v, want %v"
,
t1
,
t2
)
}
}
_
,
offset
:=
t1
.
Zone
()
_
,
offset
:=
t1
.
Zone
()
if
offset
!=
11
*
60
*
60
{
if
offset
!=
3
*
60
*
60
{
t
.
Fatalf
(
"ParseInLocation(Feb 01 2013 EST, Sydney).Zone = _, %d, want _, %d"
,
offset
,
11
*
60
*
60
)
t
.
Fatalf
(
"ParseInLocation(Feb 01 2013 AST, Baghdad).Zone = _, %d, want _, %d"
,
offset
,
3
*
60
*
60
)
}
blancSablon
,
err
:=
LoadLocation
(
"America/Blanc-Sablon"
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
}
t1
,
err
=
ParseInLocation
(
"Jan 02 2006 MST"
,
"
Aug 01 2013 EST"
,
loc
)
t1
,
err
=
ParseInLocation
(
"Jan 02 2006 MST"
,
"
Feb 01 2013 AST"
,
blancSablon
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
t2
=
Date
(
2013
,
August
,
1
,
00
,
00
,
00
,
0
,
loc
)
t2
=
Date
(
2013
,
February
,
1
,
00
,
00
,
00
,
0
,
blancSablon
)
if
t1
!=
t2
{
if
t1
!=
t2
{
t
.
Fatalf
(
"ParseInLocation(
Aug 01 2013 EST, Sydney
) = %v, want %v"
,
t1
,
t2
)
t
.
Fatalf
(
"ParseInLocation(
Feb 01 2013 AST, Blanc-Sablon
) = %v, want %v"
,
t1
,
t2
)
}
}
_
,
offset
=
t1
.
Zone
()
_
,
offset
=
t1
.
Zone
()
if
offset
!=
10
*
60
*
60
{
if
offset
!=
-
4
*
60
*
60
{
t
.
Fatalf
(
"ParseInLocation(
Aug 01 2013 EST, Sydney).Zone = _, %d, want _, %d"
,
offset
,
10
*
60
*
60
)
t
.
Fatalf
(
"ParseInLocation(
Feb 01 2013 AST, Blanc-Sablon).Zone = _, %d, want _, %d"
,
offset
,
-
4
*
60
*
60
)
}
}
}
}
...
...
libgo/runtime/runtime.c
View file @
50a50465
...
@@ -112,8 +112,6 @@ runtime_goenvs_unix(void)
...
@@ -112,8 +112,6 @@ runtime_goenvs_unix(void)
syscall_Envs
.
__values
=
(
void
*
)
s
;
syscall_Envs
.
__values
=
(
void
*
)
s
;
syscall_Envs
.
__count
=
n
;
syscall_Envs
.
__count
=
n
;
syscall_Envs
.
__capacity
=
n
;
syscall_Envs
.
__capacity
=
n
;
traceback_cache
=
~
(
uint32
)
0
;
}
}
int32
int32
...
@@ -309,6 +307,16 @@ runtime_parsedebugvars(void)
...
@@ -309,6 +307,16 @@ runtime_parsedebugvars(void)
{
{
const
byte
*
p
;
const
byte
*
p
;
intgo
i
,
n
;
intgo
i
,
n
;
bool
tmp
;
// gotraceback caches the GOTRACEBACK setting in traceback_cache.
// gotraceback can be called before the environment is available.
// traceback_cache must be reset after the environment is made
// available, in order for the environment variable to take effect.
// The code is fixed differently in Go 1.4.
// This is a limited fix for Go 1.3.3.
traceback_cache
=
~
(
uint32
)
0
;
runtime_gotraceback
(
&
tmp
);
p
=
runtime_getenv
(
"GODEBUG"
);
p
=
runtime_getenv
(
"GODEBUG"
);
if
(
p
==
nil
)
if
(
p
==
nil
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment