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
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 {
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
{
if
z
.
err
!=
nil
{
return
z
.
err
...
...
libgo/go/compress/zlib/writer.go
View file @
50a50465
...
...
@@ -174,7 +174,8 @@ func (z *Writer) Flush() error {
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
{
if
!
z
.
wroteHeader
{
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 [
if
err
:=
checkPub
(
&
priv
.
PublicKey
);
err
!=
nil
{
return
nil
,
err
}
valid
,
out
,
err
:=
decryptPKCS1v15
(
rand
,
priv
,
ciphertext
)
if
err
==
nil
&&
valid
==
0
{
err
=
ErrDecryptio
n
valid
,
out
,
index
,
err
:=
decryptPKCS1v15
(
rand
,
priv
,
ciphertext
)
if
err
!=
nil
{
retur
n
}
if
valid
==
0
{
return
nil
,
ErrDecryption
}
out
=
out
[
index
:
]
return
}
...
...
@@ -80,21 +83,32 @@ func DecryptPKCS1v15SessionKey(rand io.Reader, priv *PrivateKey, ciphertext []by
}
k
:=
(
priv
.
N
.
BitLen
()
+
7
)
/
8
if
k
-
(
len
(
key
)
+
3
+
8
)
<
0
{
err
=
ErrDecryption
return
return
ErrDecryption
}
valid
,
msg
,
err
:=
decryptPKCS1v15
(
rand
,
priv
,
ciphertext
)
valid
,
em
,
index
,
err
:=
decryptPKCS1v15
(
rand
,
priv
,
ciphertext
)
if
err
!=
nil
{
return
}
valid
&=
subtle
.
ConstantTimeEq
(
int32
(
len
(
msg
)),
int32
(
len
(
key
)))
subtle
.
ConstantTimeCopy
(
valid
,
key
,
msg
)
if
len
(
em
)
!=
k
{
// 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
}
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
if
k
<
11
{
err
=
ErrDecryption
...
...
@@ -107,7 +121,7 @@ func decryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) (valid
return
}
em
:
=
leftPad
(
m
.
Bytes
(),
k
)
em
=
leftPad
(
m
.
Bytes
(),
k
)
firstByteIsZero
:=
subtle
.
ConstantTimeByteEq
(
em
[
0
],
0
)
secondByteIsTwo
:=
subtle
.
ConstantTimeByteEq
(
em
[
1
],
2
)
...
...
@@ -115,8 +129,7 @@ func decryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) (valid
// octets, followed by a 0, followed by the message.
// lookingForIndex: 1 iff we are still looking for the zero.
// index: the offset of the first zero byte.
var
lookingForIndex
,
index
int
lookingForIndex
=
1
lookingForIndex
:=
1
for
i
:=
2
;
i
<
len
(
em
);
i
++
{
equals0
:=
subtle
.
ConstantTimeByteEq
(
em
[
i
],
0
)
...
...
@@ -129,8 +142,8 @@ func decryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) (valid
validPS
:=
subtle
.
ConstantTimeLessOrEq
(
2
+
8
,
index
)
valid
=
firstByteIsZero
&
secondByteIsTwo
&
(
^
lookingForIndex
&
1
)
&
validPS
msg
=
em
[
index
+
1
:
]
return
index
=
subtle
.
ConstantTimeSelect
(
valid
,
index
+
1
,
0
)
return
valid
,
em
,
index
,
nil
}
// 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) {
}
}
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:
// -----BEGIN RSA PRIVATE KEY-----
// MIIBOgIBAAJBALKZD0nEffqM1ACuak0bijtqE2QrI/KLADv7l3kK3ppMyCuLKoF0
...
...
libgo/go/crypto/subtle/constant_time.go
View file @
50a50465
...
...
@@ -49,9 +49,14 @@ func ConstantTimeEq(x, y int32) int {
return
int
(
z
&
1
)
}
// ConstantTimeCopy copies the contents of y into x iff v == 1. If v == 0, x is left unchanged.
// Its behavior is undefined if v takes any other value.
// ConstantTimeCopy copies the contents of y into x (a slice of equal length)
// 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
)
{
if
len
(
x
)
!=
len
(
y
)
{
panic
(
"subtle: slices have different lengths"
)
}
xmask
:=
byte
(
v
-
1
)
ymask
:=
byte
(
^
(
v
-
1
))
for
i
:=
0
;
i
<
len
(
x
);
i
++
{
...
...
libgo/go/crypto/tls/handshake_server.go
View file @
50a50465
...
...
@@ -214,6 +214,10 @@ Curves:
func
(
hs
*
serverHandshakeState
)
checkForResumption
()
bool
{
c
:=
hs
.
c
if
c
.
config
.
SessionTicketsDisabled
{
return
false
}
var
ok
bool
if
hs
.
sessionState
,
ok
=
c
.
decryptTicket
(
hs
.
clientHello
.
sessionTicket
);
!
ok
{
return
false
...
...
libgo/go/crypto/tls/handshake_server_test.go
View file @
50a50465
...
...
@@ -557,6 +557,32 @@ func TestResumption(t *testing.T) {
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
// Thus, they have no ExtKeyUsage fields and trigger an error
// 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) {
}
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
}
...
...
libgo/go/net/dnsconfig_unix.go
View file @
50a50465
...
...
@@ -75,19 +75,19 @@ func dnsReadConfig(filename string) (*dnsConfig, error) {
for
i
:=
1
;
i
<
len
(
f
);
i
++
{
s
:=
f
[
i
]
switch
{
case
len
(
s
)
>=
6
&&
s
[
0
:
6
]
==
"ndots:"
:
case
hasPrefix
(
s
,
"ndots:"
)
:
n
,
_
,
_
:=
dtoi
(
s
,
6
)
if
n
<
1
{
n
=
1
}
conf
.
ndots
=
n
case
len
(
s
)
>=
8
&&
s
[
0
:
8
]
==
"timeout:"
:
case
hasPrefix
(
s
,
"timeout:"
)
:
n
,
_
,
_
:=
dtoi
(
s
,
8
)
if
n
<
1
{
n
=
1
}
conf
.
timeout
=
n
case
len
(
s
)
>=
8
&&
s
[
0
:
9
]
==
"attempts:"
:
case
hasPrefix
(
s
,
"attempts:"
)
:
n
,
_
,
_
:=
dtoi
(
s
,
9
)
if
n
<
1
{
n
=
1
...
...
@@ -103,3 +103,7 @@ func dnsReadConfig(filename string) (*dnsConfig, error) {
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 {
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,
// because fd is not yet accessible to user,
// so no concurrent operations are possible.
if
err
:=
fd
.
pd
.
PrepareWrite
();
err
!=
nil
{
return
err
}
switch
err
:=
syscall
.
Connect
(
fd
.
sysfd
,
ra
);
err
{
case
syscall
.
EINPROGRESS
,
syscall
.
EALREADY
,
syscall
.
EINTR
:
case
nil
,
syscall
.
EISCONN
:
if
!
deadline
.
IsZero
()
&&
deadline
.
Before
(
time
.
Now
())
{
return
errTimeout
}
if
err
:=
fd
.
init
();
err
!=
nil
{
return
err
}
return
nil
case
syscall
.
EINVAL
:
// On Solaris we can see EINVAL if the socket has
...
...
@@ -92,6 +95,13 @@ func (fd *netFD) connect(la, ra syscall.Sockaddr) error {
default
:
return
err
}
if
err
:=
fd
.
init
();
err
!=
nil
{
return
err
}
if
!
deadline
.
IsZero
()
{
fd
.
setWriteDeadline
(
deadline
)
defer
fd
.
setWriteDeadline
(
noDeadline
)
}
for
{
// Performing multiple connect system calls on a
// 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) {
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,
// because fd is not yet accessible to user,
// 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
)
{
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) {
}
func
TestIssue7264
(
t
*
testing
.
T
)
{
t
.
Skip
(
"broken test - removed at tip"
)
for
i
:=
0
;
i
<
1000
;
i
++
{
func
()
{
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
}
}
}
if
err
:=
fd
.
init
();
err
!=
nil
{
return
err
}
var
rsa
syscall
.
Sockaddr
if
raddr
!=
nil
{
if
rsa
,
err
=
raddr
.
sockaddr
(
fd
.
family
);
err
!=
nil
{
return
err
}
else
if
rsa
!=
nil
{
if
!
deadline
.
IsZero
()
{
fd
.
setWriteDeadline
(
deadline
)
}
if
err
:=
fd
.
connect
(
lsa
,
rsa
);
err
!=
nil
{
return
err
}
fd
.
isConnected
=
true
if
!
deadline
.
IsZero
()
{
fd
.
setWriteDeadline
(
noDeadline
)
}
}
if
err
:=
fd
.
connect
(
lsa
,
rsa
,
deadline
);
err
!=
nil
{
return
err
}
fd
.
isConnected
=
true
}
else
{
if
err
:=
fd
.
init
();
err
!=
nil
{
return
err
}
}
lsa
,
_
=
syscall
.
Getsockname
(
fd
.
sysfd
)
...
...
libgo/go/net/testdata/resolv.conf
View file @
50a50465
...
...
@@ -3,3 +3,4 @@
domain
Home
nameserver
192
.
168
.
1
.
1
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) {
}
}
func
TestParseInSydney
(
t
*
testing
.
T
)
{
loc
,
err
:=
LoadLocation
(
"Australia/Sydney"
)
func
TestParseInLocation
(
t
*
testing
.
T
)
{
// 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
{
t
.
Fatal
(
err
)
}
// Check that Parse (and ParseInLocation) understand
// 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
)
t1
,
err
:=
ParseInLocation
(
"Jan 02 2006 MST"
,
"Feb 01 2013 AST"
,
baghdad
)
if
err
!=
nil
{
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
{
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
()
if
offset
!=
11
*
60
*
60
{
t
.
Fatalf
(
"ParseInLocation(Feb 01 2013 EST, Sydney).Zone = _, %d, want _, %d"
,
offset
,
11
*
60
*
60
)
if
offset
!=
3
*
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
{
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
{
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
()
if
offset
!=
10
*
60
*
60
{
t
.
Fatalf
(
"ParseInLocation(
Aug 01 2013 EST, Sydney).Zone = _, %d, want _, %d"
,
offset
,
10
*
60
*
60
)
if
offset
!=
-
4
*
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)
syscall_Envs
.
__values
=
(
void
*
)
s
;
syscall_Envs
.
__count
=
n
;
syscall_Envs
.
__capacity
=
n
;
traceback_cache
=
~
(
uint32
)
0
;
}
int32
...
...
@@ -309,6 +307,16 @@ runtime_parsedebugvars(void)
{
const
byte
*
p
;
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"
);
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