Staging
v0.5.1
https://github.com/python/cpython
Revision 07432c33a0cab9d40ec71b274ec4bca5c57ca6e9 authored by Miss Islington (bot) on 22 November 2019, 23:38:37 UTC, committed by GitHub on 22 November 2019, 23:38:37 UTC

* fix HTTP Digest handling in request.py

There is a bug triggered when server replies to a request with `WWW-Authenticate: Digest` where `qop="auth,auth-int"` rather than mere `qop="auth"`. Having both `auth` and `auth-int` is legitimate according to the `qop-options` rule in §3.2.1 of [[https://www.ietf.org/rfc/rfc2617.txt|RFC 2617]]:
>      qop-options       = "qop" "=" <"> 1GH-qop-value <">
>      qop-value         = "auth" | "auth-int" | token
> **qop-options**: [...] If present, it is a quoted string **of one or more** tokens indicating the "quality of protection" values supported by the server.  The value `"auth"` indicates authentication; the value `"auth-int"` indicates authentication with integrity protection

This is description confirmed by the definition of the [//n//]`GH-`[//m//]//rule// extended-BNF pattern defined in §2.1 of [[https://www.ietf.org/rfc/rfc2616.txt|RFC 2616]] as 'a comma-separated list of //rule// with at least //n// and at most //m// items'.

When this reply is parsed by `get_authorization`, request.py only tests for identity with `'auth'`, failing to recognize it as one of the supported modes the server announced, and claims that `"qop 'auth,auth-int' is not supported"`.

* 📜🤖 Added by blurb_it.

* bpo-38686 review fix: remember why.

* fix trailing space in Lib/urllib/request.py

Co-Authored-By: Brandt Bucher <brandtbucher@gmail.com>
(cherry picked from commit 14a89c47983f2fb9e7fdf33c769e622eefd3a14a)

Co-authored-by: PypeBros <PypeBros@users.noreply.github.com>
1 parent c58a811
History
Tip revision: 07432c33a0cab9d40ec71b274ec4bca5c57ca6e9 authored by Miss Islington (bot) on 22 November 2019, 23:38:37 UTC
bpo-38686: fix HTTP Digest handling in request.py (GH-17045)
Tip revision: 07432c3
File Mode Size
NEWS.d
ACKS -rw-r--r-- 26.5 KB
HISTORY -rw-r--r-- 1.3 MB
Porting -rw-r--r-- 63 bytes
README -rw-r--r-- 1.4 KB
README.AIX -rw-r--r-- 4.7 KB
README.coverity -rw-r--r-- 845 bytes
README.valgrind -rw-r--r-- 4.5 KB
SpecialBuilds.txt -rw-r--r-- 9.7 KB
coverity_model.c -rw-r--r-- 4.1 KB
gdbinit -rw-r--r-- 4.7 KB
indent.pro -rw-r--r-- 557 bytes
python-config.in -rw-r--r-- 1.9 KB
python-config.sh.in -rw-r--r-- 2.7 KB
python-wing3.wpr -rw-r--r-- 555 bytes
python-wing4.wpr -rw-r--r-- 835 bytes
python-wing5.wpr -rw-r--r-- 835 bytes
python.man -rw-r--r-- 15.8 KB
python.pc.in -rw-r--r-- 293 bytes
svnmap.txt -rw-r--r-- 4.1 MB
valgrind-python.supp -rw-r--r-- 8.5 KB
vgrindefs -rw-r--r-- 500 bytes

README

back to top