Fix regressions in Subversion path normalization.

Review Request #11040 — Created June 10, 2020 and submitted

Information

Review Board
release-3.0.x

Reviewers

We recently fixed a long-standing bug with Subversion path
normalization, allowing some characters that weren't previously
supported to be properly escaped. However, this turned up some
regressions with Subversion 1.9 and older.

Subversion is very particular about which characters (with ASCII values
0 through 128) that must be escaped and which must not be. This doesn't
directly map to what urllib.quote() would normally escape.
Fortunately, it allows us to supplement the list of "safe" characters.

This change adds that list of safe characters based on the lookup table
in Subversion's code, and introduces new unit tests for comparing a URL
for the full 0-128 characters to the output that would be escaped using
exactly Subversion's table. It also runs a file existence check using
the same string, helping us ensure that we won't crash Subversion in CI
with an assertion check.

Tested this in a CI environment against Subversion 1.9, where the
crash was noticed. Unit tests passed.

Summary ID
Fix regressions in Subversion path normalization.
We recently fixed a long-standing bug with Subversion path normalization, allowing some characters that weren't previously supported to be properly escaped. However, this turned up some regressions with Subversion 1.9 and older. Subversion is very particular about which characters (with ASCII values 0 through 128) that must be escaped and which must not be. This doesn't directly map to what `urllib.quote()` would normally escape. Fortunately, it allows us to supplement the list of "safe" characters. This change adds that list of safe characters based on the lookup table in Subversion's code, and introduces new unit tests for comparing a URL for the full 0-128 characters to the output that would be escaped using exactly Subversion's table. It also runs a file existence check using the same string, helping us ensure that we won't crash Subversion in CI with an assertion check.
b19868734664fa171fd480273bd55bbd9a9411e1
david
  1. Ship It!
  2. 
      
chipx86
Review request changed
Status:
Completed
Change Summary:
Pushed to release-3.0.x (1cdab6a)