podman

Форк
0
53 строки · 1.3 Кб
1
// Copyright 2021 The Go Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4

5
package http2
6

7
import "strings"
8

9
// The HTTP protocols are defined in terms of ASCII, not Unicode. This file
10
// contains helper functions which may use Unicode-aware functions which would
11
// otherwise be unsafe and could introduce vulnerabilities if used improperly.
12

13
// asciiEqualFold is strings.EqualFold, ASCII only. It reports whether s and t
14
// are equal, ASCII-case-insensitively.
15
func asciiEqualFold(s, t string) bool {
16
	if len(s) != len(t) {
17
		return false
18
	}
19
	for i := 0; i < len(s); i++ {
20
		if lower(s[i]) != lower(t[i]) {
21
			return false
22
		}
23
	}
24
	return true
25
}
26

27
// lower returns the ASCII lowercase version of b.
28
func lower(b byte) byte {
29
	if 'A' <= b && b <= 'Z' {
30
		return b + ('a' - 'A')
31
	}
32
	return b
33
}
34

35
// isASCIIPrint returns whether s is ASCII and printable according to
36
// https://tools.ietf.org/html/rfc20#section-4.2.
37
func isASCIIPrint(s string) bool {
38
	for i := 0; i < len(s); i++ {
39
		if s[i] < ' ' || s[i] > '~' {
40
			return false
41
		}
42
	}
43
	return true
44
}
45

46
// asciiToLower returns the lowercase version of s if s is ASCII and printable,
47
// and whether or not it was.
48
func asciiToLower(s string) (lower string, ok bool) {
49
	if !isASCIIPrint(s) {
50
		return "", false
51
	}
52
	return strings.ToLower(s), true
53
}
54

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.