summaryrefslogtreecommitdiffstats
path: root/vendor/golang.org/x/text/secure/precis
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2017-06-21 19:06:17 -0700
committerCorey Hulen <corey@hulen.com>2017-06-21 19:06:17 -0700
commit42f28ab8e374137fe3f5d25424489d879d4724f8 (patch)
tree20353f2446b506d32e6d353b72a57bf48f070389 /vendor/golang.org/x/text/secure/precis
parent6b39c308d882a0aeac533f8ab1d90b48a2ae4b5a (diff)
downloadchat-42f28ab8e374137fe3f5d25424489d879d4724f8.tar.gz
chat-42f28ab8e374137fe3f5d25424489d879d4724f8.tar.bz2
chat-42f28ab8e374137fe3f5d25424489d879d4724f8.zip
Updating server dependancies (#6712)
Diffstat (limited to 'vendor/golang.org/x/text/secure/precis')
-rw-r--r--vendor/golang.org/x/text/secure/precis/enforce_test.go2
-rw-r--r--vendor/golang.org/x/text/secure/precis/profile.go48
2 files changed, 21 insertions, 29 deletions
diff --git a/vendor/golang.org/x/text/secure/precis/enforce_test.go b/vendor/golang.org/x/text/secure/precis/enforce_test.go
index 927d4ab6f..0cb5b606f 100644
--- a/vendor/golang.org/x/text/secure/precis/enforce_test.go
+++ b/vendor/golang.org/x/text/secure/precis/enforce_test.go
@@ -113,6 +113,8 @@ var enforceTestCases = []struct {
{"α͵α", "α͵α", nil},
{"͵͵α", "͵͵α", nil}, // The numeric sign is itself Greek.
{"α͵͵α", "α͵͵α", nil},
+ {"α͵͵", "", errContext},
+ {"α͵͵a", "", errContext},
}},
{"Context Rule 5+6", NewFreeform(), []testCase{
diff --git a/vendor/golang.org/x/text/secure/precis/profile.go b/vendor/golang.org/x/text/secure/precis/profile.go
index 1d7898d47..bf1025338 100644
--- a/vendor/golang.org/x/text/secure/precis/profile.go
+++ b/vendor/golang.org/x/text/secure/precis/profile.go
@@ -322,33 +322,35 @@ func (c *checker) span(src []byte, atEOF bool) (n int, err error) {
}
return n, errDisallowedRune
}
+ doLookAhead := false
if property(e) < c.p.class.validFrom {
if d.rule == nil {
return n, errDisallowedRune
}
- doLookAhead, err := d.rule(c.beforeBits)
+ doLookAhead, err = d.rule(c.beforeBits)
if err != nil {
return n, err
}
- if doLookAhead {
- c.beforeBits &= d.keep
- c.beforeBits |= d.set
- // We may still have a lookahead rule which we will require to
- // complete (by checking termBits == 0) before setting the new
- // bits.
- if c.termBits != 0 && (!c.checkLookahead() || c.termBits == 0) {
- return n, err
- }
- c.termBits = d.term
- c.acceptBits = d.accept
- n += sz
- continue
- }
}
c.beforeBits &= d.keep
c.beforeBits |= d.set
- if c.termBits != 0 && !c.checkLookahead() {
- return n, errContext
+ if c.termBits != 0 {
+ // We are currently in an unterminated lookahead.
+ if c.beforeBits&c.termBits != 0 {
+ c.termBits = 0
+ c.acceptBits = 0
+ } else if c.beforeBits&c.acceptBits == 0 {
+ // Invalid continuation of the unterminated lookahead sequence.
+ return n, errContext
+ }
+ }
+ if doLookAhead {
+ if c.termBits != 0 {
+ // A previous lookahead run has not been terminated yet.
+ return n, errContext
+ }
+ c.termBits = d.term
+ c.acceptBits = d.accept
}
n += sz
}
@@ -358,18 +360,6 @@ func (c *checker) span(src []byte, atEOF bool) (n int, err error) {
return n, err
}
-func (c *checker) checkLookahead() bool {
- switch {
- case c.beforeBits&c.termBits != 0:
- c.termBits = 0
- c.acceptBits = 0
- case c.beforeBits&c.acceptBits != 0:
- default:
- return false
- }
- return true
-}
-
// TODO: we may get rid of this transform if transform.Chain understands
// something like a Spanner interface.
func (c checker) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {