Mercurial > cpython-lru_cache-weakref
annotate Tools/ssl/make_ssl_data.py @ 84007:dbfbdf2b5c19 3.3
Fix #17967: For ftp urls CWD to target instead of hopping to each directory
towards target. This fixes a bug where target is accessible, but parent
directories are restricted.
| author | Senthil Kumaran <senthil@uthcode.com> |
|---|---|
| date | Sat, 01 Jun 2013 08:27:06 -0700 |
| parents | ad9f6e294d09 |
| children |
| rev | line source |
|---|---|
|
77579
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
1 #! /usr/bin/env python3 |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
2 |
|
77584
ad9f6e294d09
Add a docstring at the top of Tools/ssl/make_ssl_data.py
Antoine Pitrou <solipsis@pitrou.net>
parents:
77579
diff
changeset
|
3 """ |
|
ad9f6e294d09
Add a docstring at the top of Tools/ssl/make_ssl_data.py
Antoine Pitrou <solipsis@pitrou.net>
parents:
77579
diff
changeset
|
4 This script should be called *manually* when we want to upgrade SSLError |
|
ad9f6e294d09
Add a docstring at the top of Tools/ssl/make_ssl_data.py
Antoine Pitrou <solipsis@pitrou.net>
parents:
77579
diff
changeset
|
5 `library` and `reason` mnemnonics to a more recent OpenSSL version. |
|
ad9f6e294d09
Add a docstring at the top of Tools/ssl/make_ssl_data.py
Antoine Pitrou <solipsis@pitrou.net>
parents:
77579
diff
changeset
|
6 |
|
ad9f6e294d09
Add a docstring at the top of Tools/ssl/make_ssl_data.py
Antoine Pitrou <solipsis@pitrou.net>
parents:
77579
diff
changeset
|
7 It takes two arguments: |
|
ad9f6e294d09
Add a docstring at the top of Tools/ssl/make_ssl_data.py
Antoine Pitrou <solipsis@pitrou.net>
parents:
77579
diff
changeset
|
8 - the path to the OpenSSL include files' directory |
|
ad9f6e294d09
Add a docstring at the top of Tools/ssl/make_ssl_data.py
Antoine Pitrou <solipsis@pitrou.net>
parents:
77579
diff
changeset
|
9 (e.g. openssl-1.0.1-beta3/include/openssl/) |
|
ad9f6e294d09
Add a docstring at the top of Tools/ssl/make_ssl_data.py
Antoine Pitrou <solipsis@pitrou.net>
parents:
77579
diff
changeset
|
10 - the path to the C file to be generated |
|
ad9f6e294d09
Add a docstring at the top of Tools/ssl/make_ssl_data.py
Antoine Pitrou <solipsis@pitrou.net>
parents:
77579
diff
changeset
|
11 (probably Modules/_ssl_data.h) |
|
ad9f6e294d09
Add a docstring at the top of Tools/ssl/make_ssl_data.py
Antoine Pitrou <solipsis@pitrou.net>
parents:
77579
diff
changeset
|
12 """ |
|
ad9f6e294d09
Add a docstring at the top of Tools/ssl/make_ssl_data.py
Antoine Pitrou <solipsis@pitrou.net>
parents:
77579
diff
changeset
|
13 |
|
77579
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
14 import datetime |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
15 import os |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
16 import re |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
17 import sys |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
18 |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
19 |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
20 def parse_error_codes(h_file, prefix): |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
21 pat = re.compile(r"#define\W+(%s([\w]+))\W+(\d+)\b" % re.escape(prefix)) |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
22 codes = [] |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
23 with open(h_file, "r", encoding="latin1") as f: |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
24 for line in f: |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
25 match = pat.search(line) |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
26 if match: |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
27 code, name, num = match.groups() |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
28 num = int(num) |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
29 codes.append((code, name, num)) |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
30 return codes |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
31 |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
32 if __name__ == "__main__": |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
33 openssl_inc = sys.argv[1] |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
34 outfile = sys.argv[2] |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
35 use_stdout = outfile == '-' |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
36 f = sys.stdout if use_stdout else open(outfile, "w") |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
37 error_libraries = ( |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
38 # (library code, mnemonic, error prefix, header file) |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
39 ('ERR_LIB_PEM', 'PEM', 'PEM_R_', 'pem.h'), |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
40 ('ERR_LIB_SSL', 'SSL', 'SSL_R_', 'ssl.h'), |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
41 ('ERR_LIB_X509', 'X509', 'X509_R_', 'x509.h'), |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
42 ) |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
43 def w(l): |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
44 f.write(l + "\n") |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
45 w("/* File generated by Tools/ssl/make_ssl_data.py */") |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
46 w("/* Generated on %s */" % datetime.datetime.now().isoformat()) |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
47 w("") |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
48 |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
49 w("static struct py_ssl_library_code library_codes[] = {") |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
50 for libcode, mnemo, _, _ in error_libraries: |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
51 w(' {"%s", %s},' % (mnemo, libcode)) |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
52 w(' { NULL }') |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
53 w('};') |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
54 w("") |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
55 |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
56 w("static struct py_ssl_error_code error_codes[] = {") |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
57 for libcode, _, prefix, h_file in error_libraries: |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
58 codes = parse_error_codes(os.path.join(openssl_inc, h_file), prefix) |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
59 for code, name, num in sorted(codes): |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
60 w(' #ifdef %s' % (code)) |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
61 w(' {"%s", %s, %s},' % (name, libcode, code)) |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
62 w(' #else') |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
63 w(' {"%s", %s, %d},' % (name, libcode, num)) |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
64 w(' #endif') |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
65 w(' { NULL }') |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
66 w('};') |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
67 if not use_stdout: |
|
e193fe3d017e
Add forgotten files for #14837.
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff
changeset
|
68 f.close() |
