Page MenuHomePhabricator

Use "\z" instead of "$" to anchor validating regular expressions
ClosedPublic

Authored by epriestley on Mar 13 2014, 2:18 PM.
Tags
None
Referenced Files
F18447236: D8516.id20210.diff
Sun, Aug 31, 10:38 PM
F18435948: D8516.id.diff
Sun, Aug 31, 10:38 AM
F18410557: D8516.diff
Sat, Aug 30, 5:05 AM
F17949955: D8516.id20205.diff
Aug 1 2025, 12:02 AM
F17949597: D8516.id20210.diff
Jul 31 2025, 11:42 PM
F17946079: D8516.id.diff
Jul 31 2025, 1:24 PM
F17942902: D8516.id20207.diff
Jul 31 2025, 7:19 AM
F17942773: D8516.id20206.diff
Jul 31 2025, 7:09 AM
Subscribers

Details

Summary

Via HackerOne. In regular expressions, "$" matches "end of input, or before terminating newline". This means that the expression /^A$/ matches two strings: "A", and "A\n".

When we care about this, use \z instead, which matches "end of input" only.

This allowed registration of "username\n" and similar.

Test Plan
  • Grepped codebase for all calls to preg_match() / preg_match_all().
  • Fixed the ones where this seemed like it could have an impact.
  • Added and executed unit tests.

Diff Detail

Repository
rP Phabricator
Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

epriestley retitled this revision from to Use "\z" instead of "$" to anchor validating regular expressions.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added a reviewer: btrahan.
btrahan edited edge metadata.
This revision is now accepted and ready to land.Mar 13 2014, 5:38 PM
epriestley updated this revision to Diff 20210.

Closed by commit rP969d0c3e8de2 (authored by @epriestley).