Wed, 29 Jun 2016 19:43:27 -0700 sslutil: emit warning when no CA certificates loaded
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 29 Jun 2016 19:43:27 -0700] rev 29449
sslutil: emit warning when no CA certificates loaded If no CA certificates are loaded, that is almost certainly a/the reason certificate verification fails when connecting to a server. The modern ssl module in Python 2.7.9+ provides an API to access the list of loaded CA certificates. This patch emits a warning on modern Python when certificate verification fails and there are no loaded CA certificates. There is no way to detect the number of loaded CA certificates unless the modern ssl module is present. Hence the differences in test output depending on whether modern ssl is available. It's worth noting that a test which specifies a CA file still renders this warning. That is because the certificate it is loading is a x509 client certificate and not a CA certificate. This test could be updated if anyone is so inclined.
Wed, 29 Jun 2016 19:49:39 -0700 tests: test case where default ca certs not available
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 29 Jun 2016 19:49:39 -0700] rev 29448
tests: test case where default ca certs not available I'm not a fan of TLS tests not testing both branches of a possible configuration. While we have test coverage of the inability to validate a cert later in this file, I insist that we add this branch so our testing of security code is extra comprehensive.
Wed, 29 Jun 2016 19:38:24 -0700 sslutil: don't load default certificates when they aren't relevant
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 29 Jun 2016 19:38:24 -0700] rev 29447
sslutil: don't load default certificates when they aren't relevant Before, we would call SSLContext.load_default_certs() when certificate verification wasn't being used. Since SSLContext.verify_mode == ssl.CERT_NONE, this would ideally no-op. However, there is a slim chance the loading of system certs could cause a failure. Furthermore, this behavior interfered with a future patch that aims to provide a more helpful error message when we're unable to load CAs. The lack of test fallout is hopefully a sign that our security code and tests are in a relatively good state.
Wed, 29 Jun 2016 19:37:38 -0700 sslutil: display a better error message when CA file loading fails
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 29 Jun 2016 19:37:38 -0700] rev 29446
sslutil: display a better error message when CA file loading fails Before, sslcontext.load_verify_locations() would raise a ssl.SSLError which would be caught further up the stack and converted to a urlerror. By that time, we lost track of what actually errored. Trapping the error here gives users a slightly more actionable error message. The behavior between Python <2.7.9 and Python 2.7.9+ differs. This is because our fake SSLContext class installed on <2.7.9 doesn't actually do anything during load_verify_locations: it defers actions until wrap_socket() time. Unfortunately, a number of errors can occur at wrap_socket() time and we're unable to ascertain what the root cause is. But that shouldn't stop us from providing better error messages to people running a modern and secure Python version.
Wed, 29 Jun 2016 18:15:28 -0700 tests: add test for empty CA certs file
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 29 Jun 2016 18:15:28 -0700] rev 29445
tests: add test for empty CA certs file smf reported that an environment with no loaded CA certs resulted in a weird error. I'd like to detect this a bit better so we can display an actionable error message. The actual error being globbed over in this patch is "unknown error" with a ssl.c line number. That isn't useful at all.
Mon, 06 Jun 2016 13:08:13 +0200 internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com> [Mon, 06 Jun 2016 13:08:13 +0200] rev 29444
internals: move the bitmanipulation routines into its own file This is to allow more flexibility with the C sources -- now the bitmanipulation routines can be safely imported without importing Python.h
Fri, 24 Jun 2016 16:12:05 +0100 journal: new experimental extension
Martijn Pieters <mjpieters@fb.com> [Fri, 24 Jun 2016 16:12:05 +0100] rev 29443
journal: new experimental extension Records bookmark locations and shows you where bookmarks were located in the past. This is the first in a planned series of locations to be recorded; a future patch will add working copy (dirstate) tracking, and remote bookmarks will be supported as well, so the journal storage format should be fairly generic to support those use-cases.
Mon, 27 Jun 2016 11:53:50 -0400 httpclient: update to 54868ef054d2 of httpplus
Augie Fackler <raf@durin42.com> [Mon, 27 Jun 2016 11:53:50 -0400] rev 29442
httpclient: update to 54868ef054d2 of httpplus As of that revision, httpplus fully supports Python 3, including mimicing all the subtle behavior changes around headers in Python 3's http.client.
Mon, 27 Jun 2016 20:44:14 +0900 revset: check invalid function syntax "func-name"() explicitly
Yuya Nishihara <yuya@tcha.org> [Mon, 27 Jun 2016 20:44:14 +0900] rev 29441
revset: check invalid function syntax "func-name"() explicitly Before the error was caught at func() as an unknown identifier, and the optimizer failed to detect the syntax error. This patch introduces getsymbol() helper to ensure that a string is not allowed as a function name.
Tue, 28 Jun 2016 22:39:06 +0900 chg: silence warning of unused parameter 'sig'
Yuya Nishihara <yuya@tcha.org> [Tue, 28 Jun 2016 22:39:06 +0900] rev 29440
chg: silence warning of unused parameter 'sig'
(0) -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 tip