Author: markt
Date: Thu Apr 26 19:58:35 2018
New Revision: 1830262

URL: http://svn.apache.org/viewvc?rev=1830262&view=rev
Log:
First step in addressing https://bz.apache.org/bugzilla/show_bug.cgi?id=62273
This commit actually tightens up the parsing by validating each part of the 
request target individually. Subsequent commits will introduce options to 
separately relax the parsing of the path segments and the query string.

Modified:
    tomcat/tc8.0.x/trunk/   (props changed)
    
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
    
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/AbstractNioInputBuffer.java
    
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java
    tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java
    tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/LocalStrings.properties
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java
    
tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java

Propchange: tomcat/tc8.0.x/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 26 19:58:35 2018
@@ -1,2 +1,2 @@
 
/tomcat/tc8.5.x/trunk:1735042,1737966,1743139-1743140,1744151,1747537,1747925,1748002,1754614,1754643,1762124,1762183,1762203,1763792,1772948,1777014,1779719,1782037,1782240,1782386-1782387,1785669,1786845,1788249,1788324,1788905,1789216,1789335,1791528,1791558,1796697-1796698,1797521,1798543,1799162,1800143,1801693,1802805,1806799,1807079-1807080,1808880,1809831,1812093,1812143,1812145,1812319,1814975,1815945,1815956,1820207,1822186,1823164,1823497,1824960,1826872-1826873,1827862,1829310,1829777,1829796,1829935
-/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1637890,1637892,1638720-1638725,1639653,1640010,1640083-1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642233,1642280,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643066,1643121,1643128,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643465,1643474,1643536,1643570,1643634,1643649,1643651,1643654,1643675,1643731,1643733-1643734,1643761,1643766,1643814,1643937,1643963,1644017,1644169,1644201-1644203,1644321,1644323,1644516,1644523,1644529,1644535,1644730,1644768,1644784-1644785,1644790,1644793,1644815,1644884,1644886
 
,1644890,1644892,1644910,1644924,1644929-1644930,1644935,1644989,1645011,1645247,1645355,1645357-1645358,1645455,1645465,1645469,1645471,1645473,1645475,1645486-1645488,1645626,1645641,1645685,1645743,1645763,1645951-1645953,1645955,1645993,1646098-1646106,1646178,1646220,1646302,1646304,1646420,1646470-1646471,1646476,1646559,1646717-1646723,1646773,1647026,1647042,1647530,1647655,1648304,1648815,1648907,1649973,1650081,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653041,1653471,1653550,1653574,1653797,1653815-1653816,1653819,1653840,1653857,1653888,1653972,1654013,1654030,1654050,1654123,1654148,1654159,1654513,1654515,1654517,1654522,1654524,1654725,1654735,1654766,1654785,1654851-1654852,1654978,1655122-1655124,1655126-1655127,1655129-1655130,1655132-1655133,1655312,1655351,1655438,1655441,1655454,1655558,1656087,1656299,1656319,1656331,1656345,1656350,1656590,1656648-1656650,1656657,1657041,1657054,1657374,1657492,1657510,1657565,1657580,1657584,1657586,1657589,1657
 
592,1657607,1657609,1657682,1657907,1658207,1658734,1658781,1658790,1658799,1658802,1658804,1658833,1658840,1658966,1659043,1659053,1659059,1659174,1659184,1659188-1659189,1659216,1659263,1659293,1659304,1659306-1659307,1659382,1659384,1659428,1659471,1659486,1659505,1659516,1659521,1659524,1659559,1659562,1659803,1659806,1659814,1659833,1659862,1659905,1659919,1659948,1659967,1659983-1659984,1660060,1660074,1660077,1660133,1660168,1660331-1660332,1660353,1660358,1660924,1661386,1661770,1661867,1661972,1661990,1662200,1662308-1662309,1662548,1662614,1662696,1662736,1662985,1662988-1662989,1663264,1663277,1663298,1663534,1663562,1663676,1663715,1663754,1663768,1663772,1663781,1663893,1663995,1664143,1664163,1664174,1664301,1664317,1664347,1664657,1664659,1664710,1664863-1664864,1664866,1665085,1665292,1665559,1665653,1665661,1665672,1665694,1665697,1665736,1665779,1665976-1665977,1665980-1665981,1665985-1665986,1665989,1665998,1666004,1666008,1666013,1666017,1666024,1666116,1666386-1
 
666387,1666494,1666496,1666552,1666569,1666579,1666637,1666649,1666757,1666966,1666972,1666985,1666995,1666997,1667292,1667402,1667406,1667546,1667615,1667630,1667636,1667688,1667764,1667871,1668026,1668135,1668193,1668593,1668596,1668630,1668639,1668843,1669353,1669370,1669451,1669800,1669838,1669876,1669882,1670394,1670433,1670591,1670598-1670600,1670610,1670631,1670719,1670724,1670726,1670730,1670940,1671112,1672272,1672284,1673754,1674294,1675461,1675486,1675594,1675830,1676231,1676250-1676251,1676364,1676381,1676393,1676479,1676525,1676552,1676615,1676630,1676634,1676721,1676926,1676943,1677140,1677802,1678011,1678162,1678174,1678339,1678426-1678427,1678694,1678701,1679534,1679708,1679710,1679716,1680034,1680246,1681056,1681123,1681138,1681280,1681283,1681286,1681450,1681697,1681699,1681701,1681729,1681770,1681779,1681793,1681807,1681837-1681838,1681854,1681862,1681958,1682028,1682033,1682311,1682315,1682317,1682320,1682324,1682330,1682842,1684172,1684366,1684383,1684526-168452
 
7,1684549-1684550,1685556,1685591,1685739,1685744,1685772,1685816,1685826,1685891,1687242,1687261,1687268,1687340,1687544,1687549,1687551,1688563,1688841,1688878,1688885,1688896,1688901,1689345-1689346,1689357,1689656,1689675-1689677,1689679,1689687,1689825,1689856,1689918,1690011,1690021,1690054,1690080,1690209,1691134,1691487,1691813,1692744-1692747,1692849,1692894,1692896,1693088,1693105,1693429,1693461,1694058,1694111,1694290,1694501,1694548,1694658,1694660,1694788,1694872,1694878,1695006,1695354,1695371,1695379,1695459,1695582,1695706,1695778,1696199,1696272,1696280,1696366-1696368,1696378,1696390,1696392,1696467,1698212,1698220,1700607,1700870,1700896,1700977,1701093,1701113,1701123,1701213,1701607,1701666,1701673,1701760-1701761,1701765,1701940,1702092,1702183,1702244,1702246,1702250,1702268,1702313,1702531,1702630-1702635,1702637-1702638,1702640,1702647,1702660,1702662,1702665-1702666,1702668,1702671-1702673,1702675-1702676,1702680,1702722,1702778,1702795,1702862,1702881,170
 
2886,1702910,1702923,1702971,1702984,1703024,1703040,1703044,1703049-1703050,1703143,1703146,1703151,1703160,1703164,1703167,1703174,1703192,1703287,1703290,1703358,1703408,1703486,1703509,1703523,1703542,1703545,1703554,1703584,1703673,1703676,1703678,1703680,1703763,1703784,1703821,1703842,1703849,1703851,1703853,1703856,1703860,1703865,1703890,1703948,1704149,1704151,1704251,1704278,1704289,1704302,1704305,1704307,1704318,1704331,1704647,1704658,1704689,1704702,1704706,1704711,1704730-1704733,1704735,1704739,1704741-1704742,1704744,1704786,1704867,1705231,1705630,1705635,1705639,1705647,1705650-1705652,1705842,1705848,1705865-1705866,1705942,1706017,1706744-1706745,1706853,1706915,1707052,1707088,1708500-1708501,1708504-1708505,1708570,1708649,1708687,1708745,1708957,1709120,1709266,1709295,1709375,1709663,1709895,1709960,1710070,1710134,1710341,1710346,1710441,1710445,1710489,1710517,1710523,1710571,1710577,1710632,1710676,1710689,1710753-1710754,1710779,1710924,1710930,1710933,
 
1710945,1711006,1711016,1711022,1711026,1712163,1712225,1712228,1712233,1712250,1712254,1712489,1712547-1712548,1712588,1712617,1712645,1712654,1712695,1712765-1712766,1712771,1712775,1712859,1712876,1712898,1712902,1712905,1712912,1712974,1713129,1713168,1713184,1713285,1713362,1713397,1713446,1713612,1713618,1713871,1713931,1713975,1713987,1713992,1713997,1714002,1714012,1714019,1714054,1714521,1714535,1714537,1715168,1715188,1715206,1715413,1715415,1715434,1715510-1715512,1715514-1715515,1715517-1715519,1715521,1715633,1715661,1715682,1715965,1716213-1716214,1716258,1716269,1716347,1716354,1716364,1716413,1716420,1716511,1716543,1716640,1716644,1716856,1716858,1716881-1716882,1716886,1716894,1717085,1717225,1717233,1717252,1717264,1717282,1717286,1717290,1717385,1717416,1717418,1717445,1717515,1717520,1717528,1717965,1717967-1717968,1717979,1718022,1718308,1718523,1718794,1718796,1718834,1718836-1718838,1719276,1719278,1719291,1719315,1719332,1719334,1719340,1719346,1719441,17194
 
46,1719488,1719909-1719910,1720200,1720234,1720394,1720439,1720445,1720448,1720462,1720506,1720652,1720654-1720655,1720711,1720752,1720769,1720776,1720804,1720815,1721303,1721307,1721311,1721314,1721447,1721528,1721539,1721812,1721817,1721830,1721860,1721866,1721881,1721887,1722205,1722292,1722399,1722453,1722455,1722522,1722526,1722532,1722548,1722574,1722583,1722585,1722799,1722807,1722824,1722828-1722829,1722831,1722859,1722902,1722905,1722923,1722939,1722945,1722996,1723068,1723127,1723155,1723250,1723316-1723318,1723368,1723371,1723375,1723377,1723380,1723410,1723414,1723437,1723484,1723486,1723493-1723494,1723500,1723552,1723554,1723683,1723707,1723736,1723806,1724012,1724232,1724252,1724325,1724427-1724428,1724433,1724673,1724788,1724863,1724900,1724997,1725113,1725126-1725127,1725150,1725165,1725183,1725199,1725202,1725204,1725207,1725263-1725264,1725266,1725278,1725282,1725405,1725599,1725601,1725635,1725646,1725649-1725652,1725694,1725696-1725697,1725816,1725851,1725906-17
 
25907,1725910,1725914,1725920,1725926,1726177,1726202,1726628,1726632,1726637,1726639,1726648,1726651,1726654,1726669,1726676,1726803,1726925-1726926,1726972-1726973,1726991,1727162,1727670,1727675,1727899,1727914,1727917,1728091,1728138,1728433,1728448,1728664,1728677,1729185,1729361,1729625,1729730,1730101-1730102,1730137,1730612,1730946-1730975,1731008,1731055,1731079,1731283,1731856,1731882,1731946-1731958,1731976-1731983,1732359,1732488,1732900-1733448,1733602,1733617-1733963,1733978,1734113,1734128,1734192,1734258,1734301,1734418-1734454,1734466-1734512,1734522,1734592,1734594,1734597,1735041,1735577,1736162,1736209,1736280,1736646,1736836,1737119,1737280,1737339,1737632,1737664,1737715,1737834,1737903,1737959,1738014-1738015,1738018,1738022,1738039,1738043,1738059-1738060,1738147,1738149,1738174-1738175,1738643,1738850,1738982,1738996,1739079-1739081,1739087,1739113,1739153,1739172,1739176,1739474,1739492,1739726,1739762,1739775,1739814,1739817-1739818,1739975,1740131,1740324
 
,1740465,1740509,1740520,1740535,1740707,1740803,1740810,1740980,1740991,1741015,1741147,1741173,1741181,1741190,1741202,1741208,1741213,1741221,1741225,1741232,1741409,1741677,1741892,1741896,1742071,1742090,1742093,1742101,1742105,1742111,1742146,1742166,1742181,1742184,1742187,1742246,1742248-1742251,1742263-1742264,1742268,1742276,1742369,1742387,1742448,1742919,1742975,1742984,1742986,1743117,1743124-1743125,1743134,1743425,1743554,1743679,1743696-1743697,1743700-1743701,1744058,1744064-1744065,1744125,1744194,1744229,1744270,1744323,1744432,1744684,1744697,1744705,1744760,1744786,1745227,1745337,1746306,1746427,1746473,1746620,1746649,1746724,1746939,1746989,1747536,1747924,1748001,1748547,1748629,1748715,1749287,1749328,1749665-1749666,1750015,1750056,1750899,1750975,1750995,1751061,1751097,1752212,1752737,1753078,1753080,1753358,1753363,1754111,1754140-1754141,1754281,1754310,1754445,1754467,1754494,1754496,1754528,1754532-1754533,1754613,1754714,1754874,1754941,1754944,1754
 
950-1754951,1755214,1755224,1755230,1755646-1755647,1755650,1755675,1755693,1755717,1755884,1755890,1755918-1755919,1755942,1756013,1756019,1756039,1756408,1756410,1756898,1756939,1757123-1757124,1757126,1757128,1757132-1757133,1757167-1757168,1757175,1757180,1757182,1757195,1757271,1757278,1757347,1757353-1757354,1757363,1757374,1757399,1757406,1757408,1757495,1757499,1757527,1757997,1758072-1758075,1758078-1758079,1758292,1758369,1758423,1758425-1758427,1758430,1758486-1758487,1758499,1758556,1758582,1758584,1758588,1758842,1759019,1759224,1759227,1759252,1759274,1759513-1759516,1759611,1760022,1760300,1760397,1760446,1760454,1760640,1760648,1761057,1761491,1761498,1761500-1761501,1761550,1761625-1761626,1761628,1761682,1761740,1762123,1762168,1762172,1762182,1762202,1762288,1762296,1762348,1762353,1762374,1762541,1762608,1762710,1762766,1762769,1762944,1762947,1762953,1763167,1763179,1763232,1763259,1763271-1763272,1763276,1763319,1763370,1763372,1763375,1763377,1763393,1763412,1
 
763430,1763477,1763479,1763512,1763574,1763634-1763635,1763718,1763786,1763798-1763799,1763810,1764083,1764659,1764682,1764897,1765299,1765358,1765439,1765571,1766276,1766514,1766822,1766834,1766840,1767328,1767362,1767368,1767429,1767471,1767505,1767641-1767644,1768651,1768762,1768922,1769263,1770140,1770180,1770258,1770656,1770666,1770718,1770762,1771087,1771139,1771386,1771611,1771613,1771711,1771718,1771723-1771724,1771730,1771743,1771752,1771963,1772174,1772223,1772229,1772554,1772849,1772947,1773418,1773756,1773813-1773814,1774052,1774131,1774248,1774253,1774257,1774259,1774262,1774267,1774271,1774303,1774340,1774406,1774412,1775596,1776540,1776937,1777011,1777173,1777211,1777261,1777524,1777605,1777647,1778061,1778138-1778139,1778141-1778150,1778154,1779654,1779718,1780109,1780120,1780189,1780196,1780488,1780514-1780516,1780601,1781569,1781986,1782814,1782857,1782868,1782946,1783144,1783155,1783408,1784182,1784565,1784583,1784657,1784669,1784712,1784751,1784963,1785271,178566
 
7,1785762,1785774,1785823,1786070,1786123-1786124,1786127,1786129,1786341,1786378,1786844,1787250,1787662,1788224,1788241-1788242,1788248,1788323-1788324,1788328,1788741,1788747,1788764,1789051,1789400,1789415,1789442,1789685,1789733,1789735,1789744-1789745,1790119,1790180,1790183,1790376,1790443,1791027-1791028,1791050,1791527,1791557,1792460,1792468,1793468,1793487,1793498,1793502,1793514,1793712,1793736,1793746,1793771,1793819,1793980,1794556,1794674,1795278,1795298,1795305,1795813,1795893,1796275,1796693-1796694,1796806,1796836,1796873,1796878,1797197,1797338,1797344,1797354-1797355,1797516,1797678,1797692,1797694,1797748,1797828,1798280,1798371,1798379,1798384,1798390,1798395,1798419,1798505,1798507,1798509,1798533,1798546,1798561,1798977,1799115,1799126,1799164,1799190,1799194,1799285,1799368,1799893,1799895,1799916,1800136-1800138,1800202,1800309,1800390,1800617,1800791,1800816,1800981,1800984,1800988,1801686,1801688,1801709,1801717,1801774,1801778,1802083,1802403,1802475,180
 
2490,1802639,1802796,1802820,1802828,1802833,1802836,1803205,1803446,1803451,1803616,1803828,1803901,1804306,1804461-1804462,1804501,1804506-1804507,1804890,1804906,1805613,1805637,1805645,1805652,1805782,1806736,1806794,1806798,1806801,1806807,1806966,1806973,1807004,1807205-1807206,1807455,1807686,1807698,1808116,1808156,1808266,1808466,1808766,1809011,1809025,1809141,1809143-1809144,1809146,1809212,1809214,1809239,1809248,1809265,1809317,1809434,1809669,1809674,1809684,1809711,1809908,1809922,1810106,1810300,1811119,1811122,1811132,1811137,1811198-1811201,1811203-1811206,1811220,1811235,1811246,1811328,1811560,1811704,1811837-1811839,1811861,1811932,1812088,1812092,1812103,1812107,1812113,1812129,1812134-1812136,1812184,1812315,1812401,1812617,1814825,1814973,1814980,1815066,1815069,1815208,1815215,1815319,1815325,1815451,1815459,1815505,1815615,1815778,1815786,1815790,1815903,1815944,1815954,1816083,1816120,1816128,1816140,1816147,1816157,1816338,1816563,1816647,1817089,1817092,
 
1817096,1817104,1817126,1817136-1817137,1817196,1817223,1817298,1817305,1817495,1817517,1817520,1818179,1818184,1820003,1820138,1820153,1820194,1820196-1820197,1820202,1820206,1820222,1820272,1820279,1820302,1820634,1820701,1820705,1820932,1821157,1821167,1821197-1821203,1821225,1821234-1821235,1821251,1821293,1821328,1821381,1821490,1821708,1822109,1822111,1822116,1822232,1822644,1822775,1822945-1822946,1823006-1823007,1823111,1823161,1823306,1823310,1823337,1823481,1823492,1823495,1823540,1824297,1824311,1824323,1824357,1824766,1824774,1824892,1824901,1824959,1825054,1825713,1825738,1825872,1826361,1826375,1826688,1826731,1826825,1826867,1826869,1827363,1827368,1827491,1827498,1827860,1828016,1828223-1828239,1828253,1828262,1828545,1828565,1829082,1829084,1829086,1829879,1829915,1829934,1830013,1830051
+/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1637890,1637892,1638720-1638725,1639653,1640010,1640083-1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642233,1642280,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643066,1643121,1643128,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643465,1643474,1643536,1643570,1643634,1643649,1643651,1643654,1643675,1643731,1643733-1643734,1643761,1643766,1643814,1643937,1643963,1644017,1644169,1644201-1644203,1644321,1644323,1644516,1644523,1644529,1644535,1644730,1644768,1644784-1644785,1644790,1644793,1644815,1644884,1644886
 
,1644890,1644892,1644910,1644924,1644929-1644930,1644935,1644989,1645011,1645247,1645355,1645357-1645358,1645455,1645465,1645469,1645471,1645473,1645475,1645486-1645488,1645626,1645641,1645685,1645743,1645763,1645951-1645953,1645955,1645993,1646098-1646106,1646178,1646220,1646302,1646304,1646420,1646470-1646471,1646476,1646559,1646717-1646723,1646773,1647026,1647042,1647530,1647655,1648304,1648815,1648907,1649973,1650081,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653041,1653471,1653550,1653574,1653797,1653815-1653816,1653819,1653840,1653857,1653888,1653972,1654013,1654030,1654050,1654123,1654148,1654159,1654513,1654515,1654517,1654522,1654524,1654725,1654735,1654766,1654785,1654851-1654852,1654978,1655122-1655124,1655126-1655127,1655129-1655130,1655132-1655133,1655312,1655351,1655438,1655441,1655454,1655558,1656087,1656299,1656319,1656331,1656345,1656350,1656590,1656648-1656650,1656657,1657041,1657054,1657374,1657492,1657510,1657565,1657580,1657584,1657586,1657589,1657
 
592,1657607,1657609,1657682,1657907,1658207,1658734,1658781,1658790,1658799,1658802,1658804,1658833,1658840,1658966,1659043,1659053,1659059,1659174,1659184,1659188-1659189,1659216,1659263,1659293,1659304,1659306-1659307,1659382,1659384,1659428,1659471,1659486,1659505,1659516,1659521,1659524,1659559,1659562,1659803,1659806,1659814,1659833,1659862,1659905,1659919,1659948,1659967,1659983-1659984,1660060,1660074,1660077,1660133,1660168,1660331-1660332,1660353,1660358,1660924,1661386,1661770,1661867,1661972,1661990,1662200,1662308-1662309,1662548,1662614,1662696,1662736,1662985,1662988-1662989,1663264,1663277,1663298,1663534,1663562,1663676,1663715,1663754,1663768,1663772,1663781,1663893,1663995,1664143,1664163,1664174,1664301,1664317,1664347,1664657,1664659,1664710,1664863-1664864,1664866,1665085,1665292,1665559,1665653,1665661,1665672,1665694,1665697,1665736,1665779,1665976-1665977,1665980-1665981,1665985-1665986,1665989,1665998,1666004,1666008,1666013,1666017,1666024,1666116,1666386-1
 
666387,1666494,1666496,1666552,1666569,1666579,1666637,1666649,1666757,1666966,1666972,1666985,1666995,1666997,1667292,1667402,1667406,1667546,1667615,1667630,1667636,1667688,1667764,1667871,1668026,1668135,1668193,1668593,1668596,1668630,1668639,1668843,1669353,1669370,1669451,1669800,1669838,1669876,1669882,1670394,1670433,1670591,1670598-1670600,1670610,1670631,1670719,1670724,1670726,1670730,1670940,1671112,1672272,1672284,1673754,1674294,1675461,1675486,1675594,1675830,1676231,1676250-1676251,1676364,1676381,1676393,1676479,1676525,1676552,1676615,1676630,1676634,1676721,1676926,1676943,1677140,1677802,1678011,1678162,1678174,1678339,1678426-1678427,1678694,1678701,1679534,1679708,1679710,1679716,1680034,1680246,1681056,1681123,1681138,1681280,1681283,1681286,1681450,1681697,1681699,1681701,1681729,1681770,1681779,1681793,1681807,1681837-1681838,1681854,1681862,1681958,1682028,1682033,1682311,1682315,1682317,1682320,1682324,1682330,1682842,1684172,1684366,1684383,1684526-168452
 
7,1684549-1684550,1685556,1685591,1685739,1685744,1685772,1685816,1685826,1685891,1687242,1687261,1687268,1687340,1687544,1687549,1687551,1688563,1688841,1688878,1688885,1688896,1688901,1689345-1689346,1689357,1689656,1689675-1689677,1689679,1689687,1689825,1689856,1689918,1690011,1690021,1690054,1690080,1690209,1691134,1691487,1691813,1692744-1692747,1692849,1692894,1692896,1693088,1693105,1693429,1693461,1694058,1694111,1694290,1694501,1694548,1694658,1694660,1694788,1694872,1694878,1695006,1695354,1695371,1695379,1695459,1695582,1695706,1695778,1696199,1696272,1696280,1696366-1696368,1696378,1696390,1696392,1696467,1698212,1698220,1700607,1700870,1700896,1700977,1701093,1701113,1701123,1701213,1701607,1701666,1701673,1701760-1701761,1701765,1701940,1702092,1702183,1702244,1702246,1702250,1702268,1702313,1702531,1702630-1702635,1702637-1702638,1702640,1702647,1702660,1702662,1702665-1702666,1702668,1702671-1702673,1702675-1702676,1702680,1702722,1702778,1702795,1702862,1702881,170
 
2886,1702910,1702923,1702971,1702984,1703024,1703040,1703044,1703049-1703050,1703143,1703146,1703151,1703160,1703164,1703167,1703174,1703192,1703287,1703290,1703358,1703408,1703486,1703509,1703523,1703542,1703545,1703554,1703584,1703673,1703676,1703678,1703680,1703763,1703784,1703821,1703842,1703849,1703851,1703853,1703856,1703860,1703865,1703890,1703948,1704149,1704151,1704251,1704278,1704289,1704302,1704305,1704307,1704318,1704331,1704647,1704658,1704689,1704702,1704706,1704711,1704730-1704733,1704735,1704739,1704741-1704742,1704744,1704786,1704867,1705231,1705630,1705635,1705639,1705647,1705650-1705652,1705842,1705848,1705865-1705866,1705942,1706017,1706744-1706745,1706853,1706915,1707052,1707088,1708500-1708501,1708504-1708505,1708570,1708649,1708687,1708745,1708957,1709120,1709266,1709295,1709375,1709663,1709895,1709960,1710070,1710134,1710341,1710346,1710441,1710445,1710489,1710517,1710523,1710571,1710577,1710632,1710676,1710689,1710753-1710754,1710779,1710924,1710930,1710933,
 
1710945,1711006,1711016,1711022,1711026,1712163,1712225,1712228,1712233,1712250,1712254,1712489,1712547-1712548,1712588,1712617,1712645,1712654,1712695,1712765-1712766,1712771,1712775,1712859,1712876,1712898,1712902,1712905,1712912,1712974,1713129,1713168,1713184,1713285,1713362,1713397,1713446,1713612,1713618,1713871,1713931,1713975,1713987,1713992,1713997,1714002,1714012,1714019,1714054,1714521,1714535,1714537,1715168,1715188,1715206,1715413,1715415,1715434,1715510-1715512,1715514-1715515,1715517-1715519,1715521,1715633,1715661,1715682,1715965,1716213-1716214,1716258,1716269,1716347,1716354,1716364,1716413,1716420,1716511,1716543,1716640,1716644,1716856,1716858,1716881-1716882,1716886,1716894,1717085,1717225,1717233,1717252,1717264,1717282,1717286,1717290,1717385,1717416,1717418,1717445,1717515,1717520,1717528,1717965,1717967-1717968,1717979,1718022,1718308,1718523,1718794,1718796,1718834,1718836-1718838,1719276,1719278,1719291,1719315,1719332,1719334,1719340,1719346,1719441,17194
 
46,1719488,1719909-1719910,1720200,1720234,1720394,1720439,1720445,1720448,1720462,1720506,1720652,1720654-1720655,1720711,1720752,1720769,1720776,1720804,1720815,1721303,1721307,1721311,1721314,1721447,1721528,1721539,1721812,1721817,1721830,1721860,1721866,1721881,1721887,1722205,1722292,1722399,1722453,1722455,1722522,1722526,1722532,1722548,1722574,1722583,1722585,1722799,1722807,1722824,1722828-1722829,1722831,1722859,1722902,1722905,1722923,1722939,1722945,1722996,1723068,1723127,1723155,1723250,1723316-1723318,1723368,1723371,1723375,1723377,1723380,1723410,1723414,1723437,1723484,1723486,1723493-1723494,1723500,1723552,1723554,1723683,1723707,1723736,1723806,1724012,1724232,1724252,1724325,1724427-1724428,1724433,1724673,1724788,1724863,1724900,1724997,1725113,1725126-1725127,1725150,1725165,1725183,1725199,1725202,1725204,1725207,1725263-1725264,1725266,1725278,1725282,1725405,1725599,1725601,1725635,1725646,1725649-1725652,1725694,1725696-1725697,1725816,1725851,1725906-17
 
25907,1725910,1725914,1725920,1725926,1726177,1726202,1726628,1726632,1726637,1726639,1726648,1726651,1726654,1726669,1726676,1726803,1726925-1726926,1726972-1726973,1726991,1727162,1727670,1727675,1727899,1727914,1727917,1728091,1728138,1728433,1728448,1728664,1728677,1729185,1729361,1729625,1729730,1730101-1730102,1730137,1730612,1730946-1730975,1731008,1731055,1731079,1731283,1731856,1731882,1731946-1731958,1731976-1731983,1732359,1732488,1732900-1733448,1733602,1733617-1733963,1733978,1734113,1734128,1734192,1734258,1734301,1734418-1734454,1734466-1734512,1734522,1734592,1734594,1734597,1735041,1735577,1736162,1736209,1736280,1736646,1736836,1737119,1737280,1737339,1737632,1737664,1737715,1737834,1737903,1737959,1738014-1738015,1738018,1738022,1738039,1738043,1738059-1738060,1738147,1738149,1738174-1738175,1738643,1738850,1738982,1738996,1739079-1739081,1739087,1739113,1739153,1739172,1739176,1739474,1739492,1739726,1739762,1739775,1739814,1739817-1739818,1739975,1740131,1740324
 
,1740465,1740509,1740520,1740535,1740707,1740803,1740810,1740980,1740991,1741015,1741147,1741173,1741181,1741190,1741202,1741208,1741213,1741221,1741225,1741232,1741409,1741677,1741892,1741896,1742071,1742090,1742093,1742101,1742105,1742111,1742146,1742166,1742181,1742184,1742187,1742246,1742248-1742251,1742263-1742264,1742268,1742276,1742369,1742387,1742448,1742919,1742975,1742984,1742986,1743117,1743124-1743125,1743134,1743425,1743554,1743679,1743696-1743697,1743700-1743701,1744058,1744064-1744065,1744125,1744194,1744229,1744270,1744323,1744432,1744684,1744697,1744705,1744760,1744786,1745227,1745337,1746306,1746427,1746473,1746620,1746649,1746724,1746939,1746989,1747536,1747924,1748001,1748547,1748629,1748715,1749287,1749328,1749665-1749666,1750015,1750056,1750899,1750975,1750995,1751061,1751097,1752212,1752737,1753078,1753080,1753358,1753363,1754111,1754140-1754141,1754281,1754310,1754445,1754467,1754494,1754496,1754528,1754532-1754533,1754613,1754714,1754874,1754941,1754944,1754
 
950-1754951,1755214,1755224,1755230,1755646-1755647,1755650,1755675,1755693,1755717,1755884,1755890,1755918-1755919,1755942,1756013,1756019,1756039,1756408,1756410,1756898,1756939,1757123-1757124,1757126,1757128,1757132-1757133,1757167-1757168,1757175,1757180,1757182,1757195,1757271,1757278,1757347,1757353-1757354,1757363,1757374,1757399,1757406,1757408,1757495,1757499,1757527,1757997,1758072-1758075,1758078-1758079,1758292,1758369,1758423,1758425-1758427,1758430,1758486-1758487,1758499,1758556,1758582,1758584,1758588,1758842,1759019,1759224,1759227,1759252,1759274,1759513-1759516,1759611,1760022,1760300,1760397,1760446,1760454,1760640,1760648,1761057,1761491,1761498,1761500-1761501,1761550,1761625-1761626,1761628,1761682,1761740,1762123,1762168,1762172,1762182,1762202,1762288,1762296,1762348,1762353,1762374,1762541,1762608,1762710,1762766,1762769,1762944,1762947,1762953,1763167,1763179,1763232,1763259,1763271-1763272,1763276,1763319,1763370,1763372,1763375,1763377,1763393,1763412,1
 
763430,1763477,1763479,1763512,1763574,1763634-1763635,1763718,1763786,1763798-1763799,1763810,1764083,1764659,1764682,1764897,1765299,1765358,1765439,1765571,1766276,1766514,1766822,1766834,1766840,1767328,1767362,1767368,1767429,1767471,1767505,1767641-1767644,1768651,1768762,1768922,1769263,1770140,1770180,1770258,1770656,1770666,1770718,1770762,1771087,1771139,1771386,1771611,1771613,1771711,1771718,1771723-1771724,1771730,1771743,1771752,1771963,1772174,1772223,1772229,1772554,1772849,1772947,1773418,1773756,1773813-1773814,1774052,1774131,1774248,1774253,1774257,1774259,1774262,1774267,1774271,1774303,1774340,1774406,1774412,1775596,1776540,1776937,1777011,1777173,1777211,1777261,1777524,1777605,1777647,1778061,1778138-1778139,1778141-1778150,1778154,1779654,1779718,1780109,1780120,1780189,1780196,1780488,1780514-1780516,1780601,1781569,1781986,1782814,1782857,1782868,1782946,1783144,1783155,1783408,1784182,1784565,1784583,1784657,1784669,1784712,1784751,1784963,1785271,178566
 
7,1785762,1785774,1785823,1786070,1786123-1786124,1786127,1786129,1786341,1786378,1786844,1787250,1787662,1788224,1788241-1788242,1788248,1788323-1788324,1788328,1788741,1788747,1788764,1789051,1789400,1789415,1789442,1789685,1789733,1789735,1789744-1789745,1790119,1790180,1790183,1790376,1790443,1791027-1791028,1791050,1791527,1791557,1792460,1792468,1793468,1793487,1793498,1793502,1793514,1793712,1793736,1793746,1793771,1793819,1793980,1794556,1794674,1795278,1795298,1795305,1795813,1795893,1796275,1796693-1796694,1796806,1796836,1796873,1796878,1797197,1797338,1797344,1797354-1797355,1797516,1797678,1797692,1797694,1797748,1797828,1798280,1798371,1798379,1798384,1798390,1798395,1798419,1798505,1798507,1798509,1798533,1798546,1798561,1798977,1799115,1799126,1799164,1799190,1799194,1799285,1799368,1799893,1799895,1799916,1800136-1800138,1800202,1800309,1800390,1800617,1800791,1800816,1800981,1800984,1800988,1801686,1801688,1801709,1801717,1801774,1801778,1802083,1802403,1802475,180
 
2490,1802639,1802796,1802820,1802828,1802833,1802836,1803205,1803446,1803451,1803616,1803828,1803901,1804306,1804461-1804462,1804501,1804506-1804507,1804890,1804906,1805613,1805637,1805645,1805652,1805782,1806736,1806794,1806798,1806801,1806807,1806966,1806973,1807004,1807205-1807206,1807455,1807686,1807698,1808116,1808156,1808266,1808466,1808766,1809011,1809025,1809141,1809143-1809144,1809146,1809212,1809214,1809239,1809248,1809265,1809317,1809434,1809669,1809674,1809684,1809711,1809908,1809922,1810106,1810300,1811119,1811122,1811132,1811137,1811198-1811201,1811203-1811206,1811220,1811235,1811246,1811328,1811560,1811704,1811837-1811839,1811861,1811932,1812088,1812092,1812103,1812107,1812113,1812129,1812134-1812136,1812184,1812315,1812401,1812617,1814825,1814973,1814980,1815066,1815069,1815208,1815215,1815319,1815325,1815451,1815459,1815505,1815615,1815778,1815786,1815790,1815903,1815944,1815954,1816083,1816120,1816128,1816140,1816147,1816157,1816338,1816563,1816647,1817089,1817092,
 
1817096,1817104,1817126,1817136-1817137,1817196,1817223,1817298,1817305,1817495,1817517,1817520,1818179,1818184,1820003,1820138,1820153,1820194,1820196-1820197,1820202,1820206,1820222,1820272,1820279,1820302,1820634,1820701,1820705,1820932,1821157,1821167,1821197-1821203,1821225,1821234-1821235,1821251,1821293,1821328,1821381,1821490,1821708,1822109,1822111,1822116,1822232,1822644,1822775,1822945-1822946,1823006-1823007,1823111,1823161,1823306,1823310,1823337,1823481,1823492,1823495,1823540,1824297,1824311,1824323,1824357,1824766,1824774,1824892,1824901,1824959,1825054,1825713,1825738,1825872,1826361,1826375,1826688,1826731,1826825,1826867,1826869,1827363,1827368,1827491,1827498,1827860,1828016,1828223-1828239,1828253,1828262,1828545,1828565,1829082,1829084,1829086,1829879,1829915,1829934,1830013,1830051,1830068

Modified: 
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1830262&r1=1830261&r2=1830262&view=diff
==============================================================================
--- 
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java 
(original)
+++ 
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java 
Thu Apr 26 19:58:35 2018
@@ -49,6 +49,7 @@ import org.apache.tomcat.util.buf.ByteCh
 import org.apache.tomcat.util.buf.MessageBytes;
 import org.apache.tomcat.util.http.FastHttpDateFormat;
 import org.apache.tomcat.util.http.MimeHeaders;
+import org.apache.tomcat.util.http.parser.HttpParser;
 import org.apache.tomcat.util.log.UserDataHelper;
 import org.apache.tomcat.util.net.AbstractEndpoint;
 import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState;
@@ -1386,32 +1387,63 @@ public abstract class AbstractHttp11Proc
             }
         }
 
-        // Check for a full URI (including protocol://host:port/)
+        // Check for an absolute-URI less the query string which has already
+        // been removed during the parsing of the request line
         ByteChunk uriBC = request.requestURI().getByteChunk();
+        byte[] uriB = uriBC.getBytes();
         if (uriBC.startsWithIgnoreCase("http", 0)) {
-
-            int pos = uriBC.indexOf("://", 0, 3, 4);
-            int uriBCStart = uriBC.getStart();
-            int slashPos = -1;
-            if (pos != -1) {
+            int pos = 4;
+            // Check for https
+            if (uriBC.startsWithIgnoreCase("s", pos)) {
+                pos++;
+            }
+            // Next 3 characters must be "://"
+            if (uriBC.startsWith("://", pos)) {
                 pos += 3;
-                byte[] uriB = uriBC.getBytes();
-                slashPos = uriBC.indexOf('/', pos);
+                int uriBCStart = uriBC.getStart();
+
+                // '/' does not appear in the authority so use the first
+                // instance to split the authority and the path segments
+                int slashPos = uriBC.indexOf('/', pos);
+                // '@' in the authority delimits the userinfo
                 int atPos = uriBC.indexOf('@', pos);
+                if (slashPos > -1 && atPos > slashPos) {
+                    // First '@' is in the path segments so no userinfo
+                    atPos = -1;
+                }
+
                 if (slashPos == -1) {
                     slashPos = uriBC.getLength();
-                    // Set URI as "/"
-                    request.requestURI().setBytes
-                        (uriB, uriBCStart + pos - 2, 1);
+                    // Set URI as "/". Use 6 as it will always be a '/'.
+                    // 01234567
+                    // http://
+                    // https://
+                    request.requestURI().setBytes(uriB, uriBCStart + 6, 1);
                 } else {
-                    request.requestURI().setBytes
-                        (uriB, uriBCStart + slashPos,
-                         uriBC.getLength() - slashPos);
+                    request.requestURI().setBytes(uriB, uriBCStart + slashPos, 
uriBC.getLength() - slashPos);
                 }
+
                 // Skip any user info
                 if (atPos != -1) {
+                    // Validate the userinfo
+                    for (; pos < atPos; pos++) {
+                        byte c = uriB[uriBCStart + pos];
+                        if (!HttpParser.isUserInfo(c)) {
+                            // Strictly there needs to be a check for valid %nn
+                            // encoding here but skip it since it will never be
+                            // decoded because the userinfo is ignored
+                            response.setStatus(400);
+                            setErrorState(ErrorState.CLOSE_CLEAN, null);
+                            if (getLog().isDebugEnabled()) {
+                                
getLog().debug(sm.getString("http11processor.request.invalidUserInfo"));
+                            }
+                            break;
+                        }
+                    }
+                    // Skip the '@'
                     pos = atPos + 1;
                 }
+
                 if (http11) {
                     // Missing host header is illegal but handled above
                     if (hostValueMB != null) {
@@ -1444,6 +1476,25 @@ public abstract class AbstractHttp11Proc
                     hostValueMB = headers.setValue("host");
                     hostValueMB.setBytes(uriB, uriBCStart + pos, slashPos - 
pos);
                 }
+            } else {
+                response.setStatus(400);
+                setErrorState(ErrorState.CLOSE_CLEAN, null);
+                if (getLog().isDebugEnabled()) {
+                    
getLog().debug(sm.getString("http11processor.request.invalidScheme"));
+                }
+            }
+        }
+
+        // Validate the characters in the URI. %nn decoding will be checked at
+        // the point of decoding.
+        for (int i = uriBC.getStart(); i < uriBC.getEnd(); i++) {
+            if (!HttpParser.isAbsolutePath(uriB[i])) {
+                response.setStatus(400);
+                setErrorState(ErrorState.CLOSE_CLEAN, null);
+                if (getLog().isDebugEnabled()) {
+                    
getLog().debug(sm.getString("http11processor.request.invalidUri"));
+                }
+                break;
             }
         }
 
@@ -1483,20 +1534,19 @@ public abstract class AbstractHttp11Proc
                 headers.removeHeader("content-length");
                 request.setContentLength(-1);
             } else {
-                getInputBuffer().addActiveFilter
-                        (inputFilters[Constants.IDENTITY_FILTER]);
+                
getInputBuffer().addActiveFilter(inputFilters[Constants.IDENTITY_FILTER]);
                 contentDelimitation = true;
             }
         }
 
+        // Validate host name and extract port if present
         parseHost(hostValueMB);
 
         if (!contentDelimitation) {
             // If there's no content length
             // (broken HTTP/1.0 or HTTP/1.1), assume
             // the client is not broken and didn't send a body
-            getInputBuffer().addActiveFilter
-                    (inputFilters[Constants.VOID_FILTER]);
+            
getInputBuffer().addActiveFilter(inputFilters[Constants.VOID_FILTER]);
             contentDelimitation = true;
         }
 

Modified: 
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/AbstractNioInputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/AbstractNioInputBuffer.java?rev=1830262&r1=1830261&r2=1830262&view=diff
==============================================================================
--- 
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/AbstractNioInputBuffer.java 
(original)
+++ 
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/AbstractNioInputBuffer.java 
Thu Apr 26 19:58:35 2018
@@ -281,7 +281,13 @@ public abstract class AbstractNioInputBu
                     end = pos;
                 } else if ((buf[pos] == Constants.QUESTION) && 
(parsingRequestLineQPos == -1)) {
                     parsingRequestLineQPos = pos;
+                } else if (parsingRequestLineQPos != -1 && 
!HttpParser.isQuery(buf[pos])) {
+                    // %nn decoding will be checked at the point of decoding
+                    throw new 
IllegalArgumentException(sm.getString("iib.invalidRequestTarget"));
                 } else if (HttpParser.isNotRequestTarget(buf[pos])) {
+                    // This is a general check that aims to catch problems 
early
+                    // Detailed checking of each part of the request target 
will
+                    // happen in AbstractHttp11Processor#prepareRequest()
                     throw new 
IllegalArgumentException(sm.getString("iib.invalidRequestTarget"));
                 }
                 pos++;

Modified: 
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java?rev=1830262&r1=1830261&r2=1830262&view=diff
==============================================================================
--- 
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java 
(original)
+++ 
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java 
Thu Apr 26 19:58:35 2018
@@ -238,7 +238,13 @@ public class InternalAprInputBuffer exte
                 end = pos;
             } else if ((buf[pos] == Constants.QUESTION) && (questionPos == 
-1)) {
                 questionPos = pos;
+            } else if (questionPos != -1 && !HttpParser.isQuery(buf[pos])) {
+                // %nn decoding will be checked at the point of decoding
+                throw new 
IllegalArgumentException(sm.getString("iib.invalidRequestTarget"));
             } else if (HttpParser.isNotRequestTarget(buf[pos])) {
+                // This is a general check that aims to catch problems early
+                // Detailed checking of each part of the request target will
+                // happen in AbstractHttp11Processor#prepareRequest()
                 throw new 
IllegalArgumentException(sm.getString("iib.invalidRequestTarget"));
             }
 

Modified: 
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java?rev=1830262&r1=1830261&r2=1830262&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java 
(original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java 
Thu Apr 26 19:58:35 2018
@@ -199,7 +199,13 @@ public class InternalInputBuffer extends
                 end = pos;
             } else if ((buf[pos] == Constants.QUESTION) && (questionPos == 
-1)) {
                 questionPos = pos;
+            } else if (questionPos != -1 && !HttpParser.isQuery(buf[pos])) {
+                // %nn decoding will be checked at the point of decoding
+                throw new 
IllegalArgumentException(sm.getString("iib.invalidRequestTarget"));
             } else if (HttpParser.isNotRequestTarget(buf[pos])) {
+                // This is a general check that aims to catch problems early
+                // Detailed checking of each part of the request target will
+                // happen in AbstractHttp11Processor#prepareRequest()
                 throw new 
IllegalArgumentException(sm.getString("iib.invalidRequestTarget"));
             }
 

Modified: 
tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/LocalStrings.properties
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/LocalStrings.properties?rev=1830262&r1=1830261&r2=1830262&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/LocalStrings.properties 
(original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/coyote/http11/LocalStrings.properties 
Thu Apr 26 19:58:35 2018
@@ -17,6 +17,9 @@ http11processor.fallToDebug=\n Note: fur
 http11processor.header.parse=Error parsing HTTP request header
 http11processor.neverused=This method should never be used
 http11processor.request.inconsistentHosts=The host specified in the request 
line is not consistent with the host header
+http11processor.request.invalidScheme=The HTTP request contained an absolute 
URI with an invalid scheme
+http11processor.request.invalidUri==The HTTP request contained an invalid URI
+http11processor.request.invalidUserInfo=The HTTP request contained an absolute 
URI with an invalid userinfo
 http11processor.request.multipleHosts=The request contained multiple host 
headers
 http11processor.request.noHostHeader=The HTTP/1.1 request did not provide a 
host header
 http11processor.request.prepare=Error preparing request

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java?rev=1830262&r1=1830261&r2=1830262&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java 
(original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java Thu Apr 
26 19:58:35 2018
@@ -580,7 +580,33 @@ public final class ByteChunk extends Abs
 
 
     /**
-     * Returns true if the buffer starts with the specified string.
+     * Returns true if the buffer starts with the specified string when tested
+     * in a case sensitive manner.
+     *
+     * @param s the string
+     * @param pos The position
+     *
+     * @return <code>true</code> if the start matches
+     */
+    public boolean startsWith(String s, int pos) {
+        byte[] b = buff;
+        int len = s.length();
+        if (b == null || len + pos > end - start) {
+            return false;
+        }
+        int off = start + pos;
+        for (int i = 0; i < len; i++) {
+            if (b[off++] != s.charAt(i)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+
+    /**
+     * Returns true if the buffer starts with the specified string when tested
+     * in a case insensitive manner.
      *
      * @param s the string
      * @param pos The position

Modified: 
tomcat/tc8.0.x/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java?rev=1830262&r1=1830261&r2=1830262&view=diff
==============================================================================
--- 
tomcat/tc8.0.x/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java 
(original)
+++ 
tomcat/tc8.0.x/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java 
Thu Apr 26 19:58:35 2018
@@ -53,6 +53,11 @@ public class HttpParser {
     private static final boolean[] IS_ALPHA = new boolean[ARRAY_SIZE];
     private static final boolean[] IS_NUMERIC = new boolean[ARRAY_SIZE];
     private static final boolean[] REQUEST_TARGET_ALLOW = new 
boolean[ARRAY_SIZE];
+    private static final boolean[] IS_UNRESERVED = new boolean[ARRAY_SIZE];
+    private static final boolean[] IS_SUBDELIM = new boolean[ARRAY_SIZE];
+    private static final boolean[] IS_USERINFO = new boolean[ARRAY_SIZE];
+    private static final boolean[] IS_ABSOLUTEPATH = new boolean[ARRAY_SIZE];
+    private static final boolean[] IS_QUERY = new boolean[ARRAY_SIZE];
 
     static {
         String prop = 
System.getProperty("tomcat.util.http.parser.HttpParser.requestTargetAllow");
@@ -116,6 +121,40 @@ public class HttpParser {
             if (i >= 'a' && i <= 'z' || i >= 'A' && i <= 'Z') {
                 IS_ALPHA[i] = true;
             }
+
+            if (IS_ALPHA[i] || IS_NUMERIC[i] || i == '-' || i == '.' || i == 
'_' || i == '~') {
+                IS_UNRESERVED[i] = true;
+            }
+
+            if (i == '!' || i == '$' || i == '&' || i == '\'' || i == '(' || i 
== ')' || i == '*' || i == '+' ||
+                    i == ',' || i == ';' || i == '=') {
+                IS_SUBDELIM[i] = true;
+            }
+
+            // userinfo    = *( unreserved / pct-encoded / sub-delims / ":" )
+            if (IS_UNRESERVED[i] || i == '%' || IS_SUBDELIM[i] || i == ':') {
+                IS_USERINFO[i] = true;
+            }
+
+            /*
+             * absolute-path  = 1*( "/" segment )
+             * segment        = *pchar
+             * pchar          = unreserved / pct-encoded / sub-delims / ":" / 
"@"
+             *
+             * Note pchar allows everything userinfo allows plus "@"
+             */
+            if (IS_USERINFO[i] || i == '@' || i == '/') {
+                IS_ABSOLUTEPATH[i] = true;
+            }
+
+            /*
+             * query          = *( pchar / "/" / "?" )
+             *
+             * Note query allows everything absolute-path allows plus "?"
+             */
+            if (IS_ABSOLUTEPATH[i] || i == '?') {
+                IS_QUERY[i] = true;
+            }
         }
     }
 
@@ -212,6 +251,39 @@ public class HttpParser {
         } catch (ArrayIndexOutOfBoundsException ex) {
             return false;
         }
+    }
+
+
+    public static boolean isUserInfo(int c) {
+        // Fast for valid user info characters, slower for some incorrect
+        // ones
+        try {
+            return IS_USERINFO[c];
+        } catch (ArrayIndexOutOfBoundsException ex) {
+            return false;
+        }
+    }
+
+
+    public static boolean isAbsolutePath(int c) {
+        // Fast for valid user info characters, slower for some incorrect
+        // ones
+        try {
+            return IS_ABSOLUTEPATH[c];
+        } catch (ArrayIndexOutOfBoundsException ex) {
+            return false;
+        }
+    }
+
+
+    public static boolean isQuery(int c) {
+        // Fast for valid user info characters, slower for some incorrect
+        // ones
+        try {
+            return IS_QUERY[c];
+        } catch (ArrayIndexOutOfBoundsException ex) {
+            return false;
+        }
     }
 
 

Modified: 
tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java?rev=1830262&r1=1830261&r2=1830262&view=diff
==============================================================================
--- 
tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java 
(original)
+++ 
tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java 
Thu Apr 26 19:58:35 2018
@@ -68,7 +68,7 @@ public class TestApplicationContext exte
 
         ByteChunk res = new ByteChunk();
         int rc = getUrl("http://localhost:"; + getPort() +
-                "/test/bug5nnnn/bug53467].jsp", res, null);
+                "/test/bug5nnnn/bug53467%5D.jsp", res, null);
 
         Assert.assertEquals(HttpServletResponse.SC_OK, rc);
         Assert.assertTrue(res.toString().contains("<p>OK</p>"));



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to