Changeset 26368 in webkit


Ignore:
Timestamp:
Oct 11, 2007 3:27:55 PM (17 years ago)
Author:
oliver
Message:

Fix for Bug 15468: Parsing of numbers and lists is too lenient in SVG

Reviewed by Niko.

Correct parsing of numbers, number lists, and length lists in SVG.

  • ksvg2/svg/SVGLength.cpp: (WebCore::SVGLength::setValueAsString):
  • ksvg2/svg/SVGLength.h:
  • ksvg2/svg/SVGLengthList.cpp: (WebCore::SVGLengthList::parse):
  • ksvg2/svg/SVGParserUtilities.cpp: (WebCore::parseNumber):
Location:
branches/feature-branch
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/feature-branch/LayoutTests/ChangeLog

    r26366 r26368  
     12007-10-11  Oliver Hunt  <oliver@apple.com>
     2
     3        Reviewed by Niko.
     4
     5        Fix for Bug 15468: Parsing of numbers and lists is too lenient in SVG
     6
     7        Updating layout test results for more strict parsing of SVGNumber and
     8        SVGLengthList
     9
     10        * platform/mac/svg/custom/path-bad-data-expected.txt:
     11        * svg/dom/length-list-parser-expected.txt:
     12
    1132007-10-11  Allan Sandfeld Jensen  <sandfeld@kde.org>
    214 
  • branches/feature-branch/LayoutTests/platform/mac/svg/custom/path-bad-data-expected.txt

    r26172 r26368  
    22CONSOLE MESSAGE: line 10: Error: Problem parsing d="M 602.7771 261.4254 A 318.0399 308.0491 0 1 602.7771 261.4253"
    33CONSOLE MESSAGE: line 11: Error: Problem parsing d="M 0 0 L 10,, 10"
     4CONSOLE MESSAGE: line 12: Error: Problem parsing d="M 0 0 L 10 10E Z"
    45CONSOLE MESSAGE: line 13: Error: Problem parsing d="M 0 0 L 10 10% Z"
    56CONSOLE MESSAGE: line 14: Error: Problem parsing d="M"
     
    1415    RenderPath {path} at (inf,inf) size 0x0 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#FF0000]}] [data="M602.78,261.43"]
    1516    RenderPath {path} at (inf,inf) size 0x0 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#FF0000]}] [data="M0.00,0.00"]
    16     RenderPath {path} at (-0.35,-0.35) size 10.71x10.71 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#FF0000]}] [data="M0.00,0.00L10.00,10.00"]
     17    RenderPath {path} at (inf,inf) size 0x0 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#FF0000]}] [data="M0.00,0.00"]
    1718    RenderPath {path} at (-0.35,-0.35) size 10.71x10.71 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#FF0000]}] [data="M0.00,0.00L10.00,10.00"]
    1819    RenderPath {path} at (0,0) size 0x0 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#FF0000]}] [data=""]
  • branches/feature-branch/LayoutTests/svg/dom/length-list-parser-expected.txt

    r20373 r26368  
    44
    55
    6 Parsed as 4 length(s) [ 0, -0, 63, 7 ]: e,-.++979,63e,7
    7 Parsed as 3 length(s) [ -0, nan, 8796 ]: -. e809534-e8  ,8796+
    8 Parsed as 2 length(s) [ 0, -38 ]: e7++ -38e
    96Parsed as 3 length(s) [ 4, 0.252, 9 ]: 4        ,.252   +9
    10 Parsed as 2 length(s) [ 0, 9.95301e+06 ]: e 9953010
    11 Parsed as 5 length(s) [ 9.08, 0, 9, 468, 0 ]: 9.08.848e2898614e85 e-2-81709     9 468 ..9
    12 Parsed as 1 length(s) [ 0 ]: e.+63
    13 Parsed as 3 length(s) [ -0, 0, inf ]: ---49 0+,8e962
    14 Parsed as 4 length(s) [ 787, 3.01, 0, 0 ]: 787 3.01, .0,e
    15 Parsed as 2 length(s) [ 0, 892 ]: ..7.. 892-53
    16 Parsed as 2 length(s) [ 7, 14 ]: 7ee    14+
    17 Parsed as 5 length(s) [ -0, 0, 593, 7.48321e+12, 8.3385e+22 ]: -e.      e 593.e,0748321.1e7 083385e18
    18 Parsed as 9 length(s) [ -0, 5, 4, 29, -8, 1, 57, 5, 19 ]: -e2+2+0 5 4e 29       -8 1 57 05,19
    19 Parsed as 6 length(s) [ 4, 45, -685, 0, 26, 0 ]: 4,45   -685 +  26.e   +e4-
    20 Parsed as 3 length(s) [ 0, 6.41239e+08, -0 ]: 0+,9231173915+,--2-36e777470
     7Parsed as 1 length(s) [ 9.08 ]: 9.08.848e2898614e85 e-2-81709   9 468 ..9
     8Parsed as 3 length(s) [ 787, 3.01, 0 ]: 787 3.01, .0,e
     9Parsed as 3 length(s) [ 4, 45, -685 ]: 4,45     -685 +  26.e   +e4-
     10Parsed as 2 length(s) [ 0, 6.41239e+08 ]: 0+,9231173915+,--2-36e777470
    2111Parsed as 1 length(s) [ 89.517 ]: 89.517.70410652,,572-970      2-. 39
    22 Parsed as 3 length(s) [ -0, inf, 0 ]: --48 ,8538.7e+63e9  .-e61-1-.e236
    2312Parsed as 2 length(s) [ 823, 1 ]: 823,1
    24 Parsed as 3 length(s) [ -0.267, 33, 0 ]: -00.267.7 33   e5
    25 Parsed as 6 length(s) [ 768, 0, 8.47866e+08, 0, 0, 21 ]: 768-7 e ,847866488-446..54,+,0  21
    26 Parsed as 2 length(s) [ 2921, -96 ]: 2921. -96.+..
    27 Parsed as 7 length(s) [ 42, 9, 624, 0, 9, 0, 7 ]: 42    9 624   0. 9 e47e52147433       7       
    28 Parsed as 8 length(s) [ 3, 60746, 495, 60.49, -0, 3194, 0.192, 69 ]: 3 60746- 495       60.49 -+ 3194 .192,69--
     13Parsed as 2 length(s) [ -0.267, 33 ]: -00.267.7 33      e5
     14Parsed as 1 length(s) [ 768 ]: 768-7 e ,847866488-446..54,+,0    21
     15Parsed as 3 length(s) [ 42, 9, 624 ]: 42        9 624   0. 9 e47e52147433       7       
     16Parsed as 4 length(s) [ 3, 60746, 495, 60.49 ]: 3 60746- 495    60.49 -+ 3194 .192,69--
    2917Parsed as 3 length(s) [ 489, 6.76966e+08, 2 ]: 0489e,676965885  +2
    30 Parsed as 6 length(s) [ 54, 858, 975, 0.33, 5, -0 ]: 54 858+0.7e4580611 975     .33e,5  -
    31 Parsed as 8 length(s) [ 0, 0, 9, 3, 589, -46, -5, inf ]: 0e1 e,9 3 589  -46+58  -5      1e68
    32 Parsed as 6 length(s) [ 0, 98, 52, 0.5675, 0.7812, 9 ]: +-799e,98, 52 .5675e,.7812+ ,9+
    33 Parsed as 5 length(s) [ -0, nan, 98, 0, 68 ]: - e775+,98 ee 68
    34 Parsed as 6 length(s) [ 9.46328e+08, 2, 12, 15, 4, 0.58 ]: 946328317e. 2        +12+.601+8+9+08,15      4, .58
    35 Parsed as 3 length(s) [ 525, 0, 252020 ]: 525 ,.+ 252020-
    36 Parsed as 4 length(s) [ 7.23607e+06, 0, nan, 3131 ]: 7236071+672,.,+e944-.005 3131+.9
     18Parsed as 5 length(s) [ 54, 858, 975, 0.33, 5 ]: 54     858+0.7e4580611 975     .33e,5  -
     19Parsed as 1 length(s) [ 0 ]: 0e1 e,9 3 589      -46+58  -5      1e68
     20Parsed as 1 length(s) [ 525 ]: 525 ,.+ 252020-
     21Parsed as 1 length(s) [ 7.23607e+06 ]: 7236071+672,.,+e944-.005 3131+.9
    3722Parsed as 1 length(s) [ 172 ]: 172e
    3823Parsed as 4 length(s) [ 3, 17, 6, 8 ]: 003-4-572e, 17e0-353125 6        8
    3924Parsed as 4 length(s) [ 919, 0, 20, 82 ]: 919+5.        +0e 20+ ,82
    40 Parsed as 5 length(s) [ 0, 91, 0, 1, 7e+06 ]: .+85      91      0 1+1e5-6,7e6-
    4125Parsed as 2 length(s) [ 9036, 6 ]: 9036 6
    4226Parsed as 5 length(s) [ -2, 7, 2, -0, 9 ]: -2 7 2+8162 -0 9
    43 Parsed as 9 length(s) [ 2, 8, 684, 0, 0, 9, 3, -0, 63 ]: 2 8+0,684 0    e 9++   3+6e,-.++979,63
    44 Parsed as 6 length(s) [ 62, 0, 3.78695e+08, 0.252, 91, 6 ]: 62- +               378694944       ,.252   +91,6
    45 Parsed as 2 length(s) [ 0, 9.95301e+06 ]: e 9953010
    46 Parsed as 5 length(s) [ 9.08, 0, 9, 468, 0 ]: 9.08.848e2898614e85 e-2-81709     9 468 ..9
    47 Parsed as 1 length(s) [ 0 ]: e.+63
    48 Parsed as 3 length(s) [ -0, 0, inf ]: ---49 0+,8e962
    49 Parsed as 4 length(s) [ 787, 3.01, 0, 0 ]: 787 3.01, .0,e
    50 Parsed as 2 length(s) [ 0, 892 ]: ..7.. 892-53
    51 Parsed as 2 length(s) [ 7, 14 ]: 7ee    14+
    52 Parsed as 5 length(s) [ -0, 0, 593, 7.48321e+12, 8.3385e+22 ]: -e.      e 593.e,0748321.1e7 083385e18
    53 Parsed as 9 length(s) [ -0, 5, 4, 29, -8, 1, 57, 5, 19 ]: -e2+2+0 5 4e 29       -8 1 57 05,19
    54 Parsed as 6 length(s) [ 4, 45, -685, 0, 26, 0 ]: 4,45   -685 +  26.e   +e4-
    55 Parsed as 3 length(s) [ 0, 6.41239e+08, -0 ]: 0+,9231173915+,--2-36e777470
     27Parsed as 4 length(s) [ 2, 8, 684, 0 ]: 2 8+0,684 0     e 9++   3+6e,-.++979,63
     28Parsed as 1 length(s) [ 62 ]: 62- +             378694944       ,.252   +91,6
     29Parsed as 1 length(s) [ 9.08 ]: 9.08.848e2898614e85 e-2-81709   9 468 ..9
     30Parsed as 3 length(s) [ 787, 3.01, 0 ]: 787 3.01, .0,e
     31Parsed as 3 length(s) [ 4, 45, -685 ]: 4,45     -685 +  26.e   +e4-
     32Parsed as 2 length(s) [ 0, 6.41239e+08 ]: 0+,9231173915+,--2-36e777470
    5633Parsed as 1 length(s) [ 89.517 ]: 89.517.70410652,,572-970      2-. 39
    57 Parsed as 3 length(s) [ -0, inf, 0 ]: --48 ,8538.7e+63e9  .-e61-1-.e236
    5834Parsed as 2 length(s) [ 823, 1 ]: 823,1
    59 Parsed as 3 length(s) [ -0.267, 33, 0 ]: -00.267.7 33   e5
    60 Parsed as 6 length(s) [ 768, 0, 8.47866e+08, 0, 0, 21 ]: 768-7 e ,847866488-446..54,+,0  21
    61 Parsed as 2 length(s) [ 2921, -96 ]: 2921. -96.+..
    62 Parsed as 7 length(s) [ 42, 9, 624, 0, 9, 0, 7 ]: 42    9 624   0. 9 e47e52147433       7       
    63 Parsed as 8 length(s) [ 3, 60746, 495, 60.49, -0, 3194, 0.192, 69 ]: 3 60746- 495       60.49 -+ 3194 .192,69--
     35Parsed as 2 length(s) [ -0.267, 33 ]: -00.267.7 33      e5
     36Parsed as 1 length(s) [ 768 ]: 768-7 e ,847866488-446..54,+,0    21
     37Parsed as 3 length(s) [ 42, 9, 624 ]: 42        9 624   0. 9 e47e52147433       7       
     38Parsed as 4 length(s) [ 3, 60746, 495, 60.49 ]: 3 60746- 495    60.49 -+ 3194 .192,69--
    6439Parsed as 3 length(s) [ 489, 6.76966e+08, 2 ]: 0489e,676965885  +2
    65 Parsed as 6 length(s) [ 54, 858, 975, 0.33, 5, -0 ]: 54 858+0.7e4580611 975     .33e,5  -
    66 Parsed as 8 length(s) [ 0, 0, 9, 3, 589, -46, -5, inf ]: 0e1 e,9 3 589  -46+58  -5      1e68
    67 Parsed as 6 length(s) [ 0, 98, 52, 0.5675, 0.7812, 9 ]: +-799e,98, 52 .5675e,.7812+ ,9+
    68 Parsed as 5 length(s) [ -0, nan, 98, 0, 68 ]: - e775+,98 ee 68
    69 Parsed as 6 length(s) [ 9.46328e+08, 2, 12, 15, 4, 0.58 ]: 946328317e. 2        +12+.601+8+9+08,15      4, .58
    70 Parsed as 3 length(s) [ 525, 0, 252020 ]: 525 ,.+ 252020-
    71 Parsed as 4 length(s) [ 7.23607e+06, 0, nan, 3131 ]: 7236071+672,.,+e944-.005 3131+.9
     40Parsed as 5 length(s) [ 54, 858, 975, 0.33, 5 ]: 54     858+0.7e4580611 975     .33e,5  -
     41Parsed as 1 length(s) [ 0 ]: 0e1 e,9 3 589      -46+58  -5      1e68
     42Parsed as 1 length(s) [ 525 ]: 525 ,.+ 252020-
     43Parsed as 1 length(s) [ 7.23607e+06 ]: 7236071+672,.,+e944-.005 3131+.9
    7244Parsed as 1 length(s) [ 172 ]: 172e
    7345Parsed as 4 length(s) [ 3, 17, 6, 8 ]: 003-4-572e, 17e0-353125 6        8
    7446Parsed as 4 length(s) [ 919, 0, 20, 82 ]: 919+5.        +0e 20+ ,82
    75 Parsed as 5 length(s) [ 0, 91, 0, 1, 7e+06 ]: .+85      91      0 1+1e5-6,7e6-
    7647Parsed as 2 length(s) [ 9036, 6 ]: 9036 6
    7748Parsed as 5 length(s) [ -2, 7, 2, -0, 9 ]: -2 7 2+8162 -0 9
    78 Parsed as 9 length(s) [ 2, 8, 684, 0, 0, 9, 3, -0, 63 ]: 2 8+0,684 0    e 9++   3+6e,-.++979,63
    79 Parsed as 6 length(s) [ 62, 0, 3.78695e+08, 0.252, 91, 6 ]: 62- +               378694944       ,.252   +91,6
    80 Parsed as 2 length(s) [ 0, 9.95301e+06 ]: e 9953010
    81 Parsed as 5 length(s) [ 9.08, 0, 9, 468, 0 ]: 9.08.848e2898614e85 e-2-81709     9 468 ..9
    82 Parsed as 1 length(s) [ 0 ]: e.+63
    83 Parsed as 3 length(s) [ -0, 0, inf ]: ---49 0+,8e962
    84 Parsed as 4 length(s) [ 787, 3.01, 0, 0 ]: 787 3.01, .0,e
    85 Parsed as 2 length(s) [ 0, 892 ]: ..7.. 892-53
    86 Parsed as 2 length(s) [ 7, 14 ]: 7ee    14+
    87 Parsed as 5 length(s) [ -0, 0, 593, 7.48321e+12, 8.3385e+22 ]: -e.      e 593.e,0748321.1e7 083385e18
    88 Parsed as 9 length(s) [ -0, 5, 4, 29, -8, 1, 57, 5, 19 ]: -e2+2+0 5 4e 29       -8 1 57 05,19
    89 Parsed as 6 length(s) [ 4, 45, -685, 0, 26, 0 ]: 4,45   -685 +  26.e   +e4-
    90 Parsed as 3 length(s) [ 0, 6.41239e+08, -0 ]: 0+,9231173915+,--2-36e777470
     49Parsed as 4 length(s) [ 2, 8, 684, 0 ]: 2 8+0,684 0     e 9++   3+6e,-.++979,63
     50Parsed as 1 length(s) [ 62 ]: 62- +             378694944       ,.252   +91,6
     51Parsed as 1 length(s) [ 9.08 ]: 9.08.848e2898614e85 e-2-81709   9 468 ..9
     52Parsed as 3 length(s) [ 787, 3.01, 0 ]: 787 3.01, .0,e
     53Parsed as 3 length(s) [ 4, 45, -685 ]: 4,45     -685 +  26.e   +e4-
     54Parsed as 2 length(s) [ 0, 6.41239e+08 ]: 0+,9231173915+,--2-36e777470
    9155Parsed as 1 length(s) [ 89.517 ]: 89.517.70410652,,572-970      2-. 39
    92 Parsed as 3 length(s) [ -0, inf, 0 ]: --48 ,8538.7e+63e9  .-e61-1-.e236
    9356Parsed as 2 length(s) [ 823, 1 ]: 823,1
    94 Parsed as 3 length(s) [ -0.267, 33, 0 ]: -00.267.7 33   e5
    95 Parsed as 6 length(s) [ 768, 0, 8.47866e+08, 0, 0, 21 ]: 768-7 e ,847866488-446..54,+,0  21
    96 Parsed as 2 length(s) [ 2921, -96 ]: 2921. -96.+..
    97 Parsed as 7 length(s) [ 42, 9, 624, 0, 9, 0, 7 ]: 42    9 624   0. 9 e47e52147433       7       
    98 Parsed as 8 length(s) [ 3, 60746, 495, 60.49, -0, 3194, 0.192, 69 ]: 3 60746- 495       60.49 -+ 3194 .192,69--
     57Parsed as 2 length(s) [ -0.267, 33 ]: -00.267.7 33      e5
     58Parsed as 1 length(s) [ 768 ]: 768-7 e ,847866488-446..54,+,0    21
     59Parsed as 3 length(s) [ 42, 9, 624 ]: 42        9 624   0. 9 e47e52147433       7       
     60Parsed as 4 length(s) [ 3, 60746, 495, 60.49 ]: 3 60746- 495    60.49 -+ 3194 .192,69--
    9961Parsed as 3 length(s) [ 489, 6.76966e+08, 2 ]: 0489e,676965885  +2
    100 Parsed as 6 length(s) [ 54, 858, 975, 0.33, 5, -0 ]: 54 858+0.7e4580611 975     .33e,5  -
    101 Parsed as 8 length(s) [ 0, 0, 9, 3, 589, -46, -5, inf ]: 0e1 e,9 3 589  -46+58  -5      1e68
    102 Parsed as 6 length(s) [ 0, 98, 52, 0.5675, 0.7812, 9 ]: +-799e,98, 52 .5675e,.7812+ ,9+
    103 Parsed as 5 length(s) [ -0, nan, 98, 0, 68 ]: - e775+,98 ee 68
    104 Parsed as 6 length(s) [ 9.46328e+08, 2, 12, 15, 4, 0.58 ]: 946328317e. 2        +12+.601+8+9+08,15      4, .58
    105 Parsed as 3 length(s) [ 525, 0, 252020 ]: 525 ,.+ 252020-
    106 Parsed as 4 length(s) [ 7.23607e+06, 0, nan, 3131 ]: 7236071+672,.,+e944-.005 3131+.9
     62Parsed as 5 length(s) [ 54, 858, 975, 0.33, 5 ]: 54     858+0.7e4580611 975     .33e,5  -
     63Parsed as 1 length(s) [ 0 ]: 0e1 e,9 3 589      -46+58  -5      1e68
     64Parsed as 1 length(s) [ 525 ]: 525 ,.+ 252020-
     65Parsed as 1 length(s) [ 7.23607e+06 ]: 7236071+672,.,+e944-.005 3131+.9
    10766Parsed as 1 length(s) [ 172 ]: 172e
    10867Parsed as 4 length(s) [ 3, 17, 6, 8 ]: 003-4-572e, 17e0-353125 6        8
    10968Parsed as 4 length(s) [ 919, 0, 20, 82 ]: 919+5.        +0e 20+ ,82
    110 Parsed as 5 length(s) [ 0, 91, 0, 1, 7e+06 ]: .+85      91      0 1+1e5-6,7e6-
    11169Parsed as 2 length(s) [ 9036, 6 ]: 9036 6
    11270Parsed as 5 length(s) [ -2, 7, 2, -0, 9 ]: -2 7 2+8162 -0 9
    113 Parsed as 9 length(s) [ 2, 8, 684, 0, 0, 9, 3, -0, 63 ]: 2 8+0,684 0    e 9++   3+6e,-.++979,63
    114 Parsed as 6 length(s) [ 62, 0, 3.78695e+08, 0.252, 91, 6 ]: 62- +               378694944       ,.252   +91,6
    115 Parsed as 2 length(s) [ 0, 9.95301e+06 ]: e 9953010
    116 Parsed as 5 length(s) [ 9.08, 0, 9, 468, 0 ]: 9.08.848e2898614e85 e-2-81709     9 468 ..9
    117 Parsed as 1 length(s) [ 0 ]: e.+63
    118 Parsed as 3 length(s) [ -0, 0, inf ]: ---49 0+,8e962
    119 Parsed as 4 length(s) [ 787, 3.01, 0, 0 ]: 787 3.01, .0,e
    120 Parsed as 2 length(s) [ 0, 892 ]: ..7.. 892-53
    121 Parsed as 2 length(s) [ 7, 14 ]: 7ee    14+
    122 Parsed as 5 length(s) [ -0, 0, 593, 7.48321e+12, 8.3385e+22 ]: -e.      e 593.e,0748321.1e7 083385e18
    123 Parsed as 9 length(s) [ -0, 5, 4, 29, -8, 1, 57, 5, 19 ]: -e2+2+0 5 4e 29       -8 1 57 05,19
    124 Parsed as 6 length(s) [ 4, 45, -685, 0, 26, 0 ]: 4,45   -685 +  26.e   +e4-
    125 Parsed as 3 length(s) [ 0, 6.41239e+08, -0 ]: 0+,9231173915+,--2-36e777470
     71Parsed as 4 length(s) [ 2, 8, 684, 0 ]: 2 8+0,684 0     e 9++   3+6e,-.++979,63
     72Parsed as 1 length(s) [ 62 ]: 62- +             378694944       ,.252   +91,6
     73Parsed as 1 length(s) [ 9.08 ]: 9.08.848e2898614e85 e-2-81709   9 468 ..9
     74Parsed as 3 length(s) [ 787, 3.01, 0 ]: 787 3.01, .0,e
     75Parsed as 3 length(s) [ 4, 45, -685 ]: 4,45     -685 +  26.e   +e4-
     76Parsed as 2 length(s) [ 0, 6.41239e+08 ]: 0+,9231173915+,--2-36e777470
    12677Parsed as 1 length(s) [ 89.517 ]: 89.517.70410652,,572-970      2-. 39
    127 Parsed as 3 length(s) [ -0, inf, 0 ]: --48 ,8538.7e+63e9  .-e61-1-.e236
    12878Parsed as 2 length(s) [ 823, 1 ]: 823,1
    129 Parsed as 3 length(s) [ -0.267, 33, 0 ]: -00.267.7 33   e5
    130 Parsed as 6 length(s) [ 768, 0, 8.47866e+08, 0, 0, 21 ]: 768-7 e ,847866488-446..54,+,0  21
    131 Parsed as 2 length(s) [ 2921, -96 ]: 2921. -96.+..
    132 Parsed as 7 length(s) [ 42, 9, 624, 0, 9, 0, 7 ]: 42    9 624   0. 9 e47e52147433       7       
    133 Parsed as 8 length(s) [ 3, 60746, 495, 60.49, -0, 3194, 0.192, 69 ]: 3 60746- 495       60.49 -+ 3194 .192,69--
     79Parsed as 2 length(s) [ -0.267, 33 ]: -00.267.7 33      e5
     80Parsed as 1 length(s) [ 768 ]: 768-7 e ,847866488-446..54,+,0    21
     81Parsed as 3 length(s) [ 42, 9, 624 ]: 42        9 624   0. 9 e47e52147433       7       
     82Parsed as 4 length(s) [ 3, 60746, 495, 60.49 ]: 3 60746- 495    60.49 -+ 3194 .192,69--
    13483Parsed as 3 length(s) [ 489, 6.76966e+08, 2 ]: 0489e,676965885  +2
    135 Parsed as 6 length(s) [ 54, 858, 975, 0.33, 5, -0 ]: 54 858+0.7e4580611 975     .33e,5  -
    136 Parsed as 8 length(s) [ 0, 0, 9, 3, 589, -46, -5, inf ]: 0e1 e,9 3 589  -46+58  -5      1e68
    137 Parsed as 6 length(s) [ 0, 98, 52, 0.5675, 0.7812, 9 ]: +-799e,98, 52 .5675e,.7812+ ,9+
    138 Parsed as 5 length(s) [ -0, nan, 98, 0, 68 ]: - e775+,98 ee 68
    139 Parsed as 6 length(s) [ 9.46328e+08, 2, 12, 15, 4, 0.58 ]: 946328317e. 2        +12+.601+8+9+08,15      4, .58
    140 Parsed as 3 length(s) [ 525, 0, 252020 ]: 525 ,.+ 252020-
    141 Parsed as 4 length(s) [ 7.23607e+06, 0, nan, 3131 ]: 7236071+672,.,+e944-.005 3131+.9
     84Parsed as 5 length(s) [ 54, 858, 975, 0.33, 5 ]: 54     858+0.7e4580611 975     .33e,5  -
     85Parsed as 1 length(s) [ 0 ]: 0e1 e,9 3 589      -46+58  -5      1e68
     86Parsed as 1 length(s) [ 525 ]: 525 ,.+ 252020-
     87Parsed as 1 length(s) [ 7.23607e+06 ]: 7236071+672,.,+e944-.005 3131+.9
    14288Parsed as 1 length(s) [ 172 ]: 172e
    14389Parsed as 4 length(s) [ 3, 17, 6, 8 ]: 003-4-572e, 17e0-353125 6        8
    14490Parsed as 4 length(s) [ 919, 0, 20, 82 ]: 919+5.        +0e 20+ ,82
    145 Parsed as 5 length(s) [ 0, 91, 0, 1, 7e+06 ]: .+85      91      0 1+1e5-6,7e6-
    14691Parsed as 2 length(s) [ 9036, 6 ]: 9036 6
    14792Parsed as 5 length(s) [ -2, 7, 2, -0, 9 ]: -2 7 2+8162 -0 9
    148 Parsed as 9 length(s) [ 2, 8, 684, 0, 0, 9, 3, -0, 63 ]: 2 8+0,684 0    e 9++   3+6e,-.++979,63
    149 Parsed as 6 length(s) [ 62, 0, 3.78695e+08, 0.252, 91, 6 ]: 62- +               378694944       ,.252   +91,6
    150 Parsed as 2 length(s) [ 0, 9.95301e+06 ]: e 9953010
    151 Parsed as 5 length(s) [ 9.08, 0, 9, 468, 0 ]: 9.08.848e2898614e85 e-2-81709     9 468 ..9
    152 Parsed as 1 length(s) [ 0 ]: e.+63
    153 Parsed as 3 length(s) [ -0, 0, inf ]: ---49 0+,8e962
    154 Parsed as 4 length(s) [ 787, 3.01, 0, 0 ]: 787 3.01, .0,e
    155 Parsed as 2 length(s) [ 0, 892 ]: ..7.. 892-53
    156 Parsed as 2 length(s) [ 7, 14 ]: 7ee    14+
    157 Parsed as 5 length(s) [ -0, 0, 593, 7.48321e+12, 8.3385e+22 ]: -e.      e 593.e,0748321.1e7 083385e18
    158 Parsed as 9 length(s) [ -0, 5, 4, 29, -8, 1, 57, 5, 19 ]: -e2+2+0 5 4e 29       -8 1 57 05,19
    159 Parsed as 6 length(s) [ 4, 45, -685, 0, 26, 0 ]: 4,45   -685 +  26.e   +e4-
    160 Parsed as 3 length(s) [ 0, 6.41239e+08, -0 ]: 0+,9231173915+,--2-36e777470
     93Parsed as 4 length(s) [ 2, 8, 684, 0 ]: 2 8+0,684 0     e 9++   3+6e,-.++979,63
     94Parsed as 1 length(s) [ 62 ]: 62- +             378694944       ,.252   +91,6
     95Parsed as 1 length(s) [ 9.08 ]: 9.08.848e2898614e85 e-2-81709   9 468 ..9
     96Parsed as 3 length(s) [ 787, 3.01, 0 ]: 787 3.01, .0,e
     97Parsed as 3 length(s) [ 4, 45, -685 ]: 4,45     -685 +  26.e   +e4-
     98Parsed as 2 length(s) [ 0, 6.41239e+08 ]: 0+,9231173915+,--2-36e777470
    16199Parsed as 1 length(s) [ 89.517 ]: 89.517.70410652,,572-970      2-. 39
    162 Parsed as 3 length(s) [ -0, inf, 0 ]: --48 ,8538.7e+63e9  .-e61-1-.e236
    163100Parsed as 2 length(s) [ 823, 1 ]: 823,1
    164 Parsed as 3 length(s) [ -0.267, 33, 0 ]: -00.267.7 33   e5
    165 Parsed as 6 length(s) [ 768, 0, 8.47866e+08, 0, 0, 21 ]: 768-7 e ,847866488-446..54,+,0  21
    166 Parsed as 2 length(s) [ 2921, -96 ]: 2921. -96.+..
    167 Parsed as 7 length(s) [ 42, 9, 624, 0, 9, 0, 7 ]: 42    9 624   0. 9 e47e52147433       7       
    168 Parsed as 8 length(s) [ 3, 60746, 495, 60.49, -0, 3194, 0.192, 69 ]: 3 60746- 495       60.49 -+ 3194 .192,69--
     101Parsed as 2 length(s) [ -0.267, 33 ]: -00.267.7 33      e5
     102Parsed as 1 length(s) [ 768 ]: 768-7 e ,847866488-446..54,+,0    21
     103Parsed as 3 length(s) [ 42, 9, 624 ]: 42        9 624   0. 9 e47e52147433       7       
     104Parsed as 4 length(s) [ 3, 60746, 495, 60.49 ]: 3 60746- 495    60.49 -+ 3194 .192,69--
    169105Parsed as 3 length(s) [ 489, 6.76966e+08, 2 ]: 0489e,676965885  +2
    170 Parsed as 6 length(s) [ 54, 858, 975, 0.33, 5, -0 ]: 54 858+0.7e4580611 975     .33e,5  -
    171 Parsed as 8 length(s) [ 0, 0, 9, 3, 589, -46, -5, inf ]: 0e1 e,9 3 589  -46+58  -5      1e68
    172 Parsed as 6 length(s) [ 0, 98, 52, 0.5675, 0.7812, 9 ]: +-799e,98, 52 .5675e,.7812+ ,9+
    173 Parsed as 5 length(s) [ -0, nan, 98, 0, 68 ]: - e775+,98 ee 68
    174 Parsed as 6 length(s) [ 9.46328e+08, 2, 12, 15, 4, 0.58 ]: 946328317e. 2        +12+.601+8+9+08,15      4, .58
    175 Parsed as 3 length(s) [ 525, 0, 252020 ]: 525 ,.+ 252020-
    176 Parsed as 4 length(s) [ 7.23607e+06, 0, nan, 3131 ]: 7236071+672,.,+e944-.005 3131+.9
     106Parsed as 5 length(s) [ 54, 858, 975, 0.33, 5 ]: 54     858+0.7e4580611 975     .33e,5  -
     107Parsed as 1 length(s) [ 0 ]: 0e1 e,9 3 589      -46+58  -5      1e68
     108Parsed as 1 length(s) [ 525 ]: 525 ,.+ 252020-
     109Parsed as 1 length(s) [ 7.23607e+06 ]: 7236071+672,.,+e944-.005 3131+.9
    177110Parsed as 1 length(s) [ 172 ]: 172e
    178111Parsed as 4 length(s) [ 3, 17, 6, 8 ]: 003-4-572e, 17e0-353125 6        8
    179112Parsed as 4 length(s) [ 919, 0, 20, 82 ]: 919+5.        +0e 20+ ,82
    180 Parsed as 5 length(s) [ 0, 91, 0, 1, 7e+06 ]: .+85      91      0 1+1e5-6,7e6-
    181113Parsed as 2 length(s) [ 9036, 6 ]: 9036 6
    182114Parsed as 5 length(s) [ -2, 7, 2, -0, 9 ]: -2 7 2+8162 -0 9
    183 Parsed as 9 length(s) [ 2, 8, 684, 0, 0, 9, 3, -0, 63 ]: 2 8+0,684 0    e 9++   3+6e,-.++979,63
    184 Parsed as 6 length(s) [ 62, 0, 3.78695e+08, 0.252, 91, 6 ]: 62- +               378694944       ,.252   +91,6
    185 Parsed as 2 length(s) [ 0, 9.95301e+06 ]: e 9953010
    186 Parsed as 5 length(s) [ 9.08, 0, 9, 468, 0 ]: 9.08.848e2898614e85 e-2-81709     9 468 ..9
    187 Parsed as 1 length(s) [ 0 ]: e.+63
    188 Parsed as 3 length(s) [ -0, 0, inf ]: ---49 0+,8e962
    189 Parsed as 4 length(s) [ 787, 3.01, 0, 0 ]: 787 3.01, .0,e
    190 Parsed as 2 length(s) [ 0, 892 ]: ..7.. 892-53
    191 Parsed as 2 length(s) [ 7, 14 ]: 7ee    14+
    192 Parsed as 5 length(s) [ -0, 0, 593, 7.48321e+12, 8.3385e+22 ]: -e.      e 593.e,0748321.1e7 083385e18
    193 Parsed as 9 length(s) [ -0, 5, 4, 29, -8, 1, 57, 5, 19 ]: -e2+2+0 5 4e 29       -8 1 57 05,19
    194 Parsed as 6 length(s) [ 4, 45, -685, 0, 26, 0 ]: 4,45   -685 +  26.e   +e4-
    195 Parsed as 3 length(s) [ 0, 6.41239e+08, -0 ]: 0+,9231173915+,--2-36e777470
     115Parsed as 4 length(s) [ 2, 8, 684, 0 ]: 2 8+0,684 0     e 9++   3+6e,-.++979,63
     116Parsed as 1 length(s) [ 62 ]: 62- +             378694944       ,.252   +91,6
     117Parsed as 1 length(s) [ 9.08 ]: 9.08.848e2898614e85 e-2-81709   9 468 ..9
     118Parsed as 3 length(s) [ 787, 3.01, 0 ]: 787 3.01, .0,e
     119Parsed as 3 length(s) [ 4, 45, -685 ]: 4,45     -685 +  26.e   +e4-
     120Parsed as 2 length(s) [ 0, 6.41239e+08 ]: 0+,9231173915+,--2-36e777470
    196121Parsed as 1 length(s) [ 89.517 ]: 89.517.70410652,,572-970      2-. 39
    197 Parsed as 3 length(s) [ -0, inf, 0 ]: --48 ,8538.7e+63e9  .-e61-1-.e236
    198122Parsed as 2 length(s) [ 823, 1 ]: 823,1
    199 Parsed as 3 length(s) [ -0.267, 33, 0 ]: -00.267.7 33   e5
    200 Parsed as 6 length(s) [ 768, 0, 8.47866e+08, 0, 0, 21 ]: 768-7 e ,847866488-446..54,+,0  21
    201 Parsed as 2 length(s) [ 2921, -96 ]: 2921. -96.+..
    202 Parsed as 7 length(s) [ 42, 9, 624, 0, 9, 0, 7 ]: 42    9 624   0. 9 e47e52147433       7       
    203 Parsed as 8 length(s) [ 3, 60746, 495, 60.49, -0, 3194, 0.192, 69 ]: 3 60746- 495       60.49 -+ 3194 .192,69--
     123Parsed as 2 length(s) [ -0.267, 33 ]: -00.267.7 33      e5
     124Parsed as 1 length(s) [ 768 ]: 768-7 e ,847866488-446..54,+,0    21
     125Parsed as 3 length(s) [ 42, 9, 624 ]: 42        9 624   0. 9 e47e52147433       7       
     126Parsed as 4 length(s) [ 3, 60746, 495, 60.49 ]: 3 60746- 495    60.49 -+ 3194 .192,69--
    204127Parsed as 3 length(s) [ 489, 6.76966e+08, 2 ]: 0489e,676965885  +2
    205 Parsed as 6 length(s) [ 54, 858, 975, 0.33, 5, -0 ]: 54 858+0.7e4580611 975     .33e,5  -
    206 Parsed as 8 length(s) [ 0, 0, 9, 3, 589, -46, -5, inf ]: 0e1 e,9 3 589  -46+58  -5      1e68
    207 Parsed as 6 length(s) [ 0, 98, 52, 0.5675, 0.7812, 9 ]: +-799e,98, 52 .5675e,.7812+ ,9+
    208 Parsed as 1 length(s) [ 0 ]:
     128Parsed as 5 length(s) [ 54, 858, 975, 0.33, 5 ]: 54     858+0.7e4580611 975     .33e,5  -
     129Parsed as 1 length(s) [ 0 ]: 0e1 e,9 3 589      -46+58  -5      1e68
    209130PASS successfullyParsed is true
    210131
  • branches/feature-branch/WebCore/ChangeLog

    r26366 r26368  
     12007-10-11  Oliver Hunt  <oliver@apple.com>
     2
     3        Reviewed by Niko.
     4
     5        Fix for Bug 15468: Parsing of numbers and lists is too lenient in SVG
     6
     7        Correct parsing of numbers, number lists, and length lists in SVG.
     8
     9        * ksvg2/svg/SVGLength.cpp:
     10        (WebCore::SVGLength::setValueAsString):
     11        * ksvg2/svg/SVGLength.h:
     12        * ksvg2/svg/SVGLengthList.cpp:
     13        (WebCore::SVGLengthList::parse):
     14        * ksvg2/svg/SVGParserUtilities.cpp:
     15        (WebCore::parseNumber):
     16
    1172007-10-11  Allan Sandfeld Jensen  <sandfeld@kde.org>
    218 
  • branches/feature-branch/WebCore/ksvg2/svg/SVGLength.cpp

    r25875 r26368  
    236236}
    237237
    238 void SVGLength::setValueAsString(const String& s)
     238bool SVGLength::setValueAsString(const String& s)
    239239{
    240240    if (s.isEmpty())
    241         return;
     241        return false;
    242242
    243243    double convertedNumber = 0;
    244244    const UChar* ptr = s.characters();
    245245    const UChar* end = ptr + s.length();
    246     parseNumber(ptr, end, convertedNumber, false);
     246   
     247    if (!parseNumber(ptr, end, convertedNumber, false))
     248        return false;
    247249
    248250    m_unit = storeUnit(extractMode(m_unit), stringToLengthType(s));
    249251    m_valueInSpecifiedUnits = narrowPrecisionToFloat(convertedNumber);
     252    return true;
    250253}
    251254
  • branches/feature-branch/WebCore/ksvg2/svg/SVGLength.h

    r25754 r26368  
    8383
    8484        String valueAsString() const;
    85         void setValueAsString(const String&);
     85        bool setValueAsString(const String&);
    8686
    8787        void newValueSpecifiedUnits(unsigned short, float valueInSpecifiedUnits);
  • branches/feature-branch/WebCore/ksvg2/svg/SVGLengthList.cpp

    r25754 r26368  
    5252        if (ptr == start)
    5353            break;
    54         appendItem(SVGLength(context, mode, String(start, ptr - start)), ec);
     54        SVGLength length(context, mode);
     55        if (!length.setValueAsString(String(start, ptr - start)))
     56            return;
     57        appendItem(length, ec);
    5558        skipOptionalSpacesOrDelimiter(ptr, end);
    5659    }
  • branches/feature-branch/WebCore/ksvg2/svg/SVGParserUtilities.cpp

    r25841 r26368  
    33                 2006       Alexander Kellett <lypanov@kde.org>
    44                 2006, 2007 Rob Buis <buis@kde.org>
     5                 2007       Apple, Inc.  All rights reserved.
    56
    67   This library is free software; you can redistribute it and/or
     
    6869        ptr++;
    6970        sign = -1;
    70     }
     71    }
     72   
     73    if (ptr == end || ((*ptr < '0' || *ptr > '9') && *ptr != '.'))
     74        // The first character of a number must be one of [0-9+-.]
     75        return false;
     76
    7177    // read the integer part
    7278    while (ptr < end && *ptr >= '0' && *ptr <= '9')
     
    7581    if (ptr < end && *ptr == '.') { // read the decimals
    7682        ptr++;
    77         while(ptr < end && *ptr >= '0' && *ptr <= '9')
     83       
     84        // There must be a least one digit following the .
     85        if (ptr >= end || *ptr < '0' || *ptr > '9')
     86            return false;
     87       
     88        while (ptr < end && *ptr >= '0' && *ptr <= '9')
    7889            decimal += (*(ptr++) - '0') * (frac *= 0.1);
    7990    }
    8091
    81     if (ptr < end && (*ptr == 'e' || *ptr == 'E')) { // read the exponent part
     92    // read the exponent part
     93    if (ptr != start && ptr + 1 < end && (*ptr == 'e' || *ptr == 'E')
     94        && (ptr[1] != 'x' && ptr[1] != 'm')) {
    8295        ptr++;
    8396
    8497        // read the sign of the exponent
    85         if (ptr < end && *ptr == '+')
     98        if (*ptr == '+')
    8699            ptr++;
    87         else if (ptr < end && *ptr == '-') {
     100        else if (*ptr == '-') {
    88101            ptr++;
    89102            expsign = -1;
    90103        }
     104       
     105        // There must be an exponent
     106        if (ptr >= end || *ptr < '0' || *ptr > '9')
     107            return false;
    91108
    92109        while (ptr < end && *ptr >= '0' && *ptr <= '9') {
Note: See TracChangeset for help on using the changeset viewer.