Magellan Linux

Annotation of /trunk/kdegraphics/patches/post-3.5.1-kdegraphics-CVE-2006-0301.diff

Parent Directory Parent Directory | Revision Log Revision Log


Revision 144 - (hide annotations) (download)
Tue May 8 20:06:05 2007 UTC (17 years ago) by niro
File size: 1684 byte(s)
-import

1 niro 144 --- kpdf/xpdf/splash/SplashXPathScanner.cc (Revision 505052)
2     +++ kpdf/xpdf/splash/SplashXPathScanner.cc (Arbeitskopie)
3     @@ -186,7 +186,7 @@ GBool SplashXPathScanner::getNextSpan(in
4     }
5    
6     void SplashXPathScanner::computeIntersections(int y) {
7     - SplashCoord ySegMin, ySegMax, xx0, xx1;
8     + SplashCoord xSegMin, xSegMax, ySegMin, ySegMax, xx0, xx1;
9     SplashXPathSeg *seg;
10     int i, j;
11    
12     @@ -236,19 +236,27 @@ void SplashXPathScanner::computeIntersec
13     } else if (seg->flags & splashXPathVert) {
14     xx0 = xx1 = seg->x0;
15     } else {
16     - if (ySegMin <= y) {
17     - // intersection with top edge
18     - xx0 = seg->x0 + ((SplashCoord)y - seg->y0) * seg->dxdy;
19     + if (seg->x0 < seg->x1) {
20     + xSegMin = seg->x0;
21     + xSegMax = seg->x1;
22     } else {
23     - // x coord of segment endpoint with min y coord
24     - xx0 = (seg->flags & splashXPathFlip) ? seg->x1 : seg->x0;
25     + xSegMin = seg->x1;
26     + xSegMax = seg->x0;
27     }
28     - if (ySegMax >= y + 1) {
29     - // intersection with bottom edge
30     - xx1 = seg->x0 + ((SplashCoord)y + 1 - seg->y0) * seg->dxdy;
31     - } else {
32     - // x coord of segment endpoint with max y coord
33     - xx1 = (seg->flags & splashXPathFlip) ? seg->x0 : seg->x1;
34     + // intersection with top edge
35     + xx0 = seg->x0 + ((SplashCoord)y - seg->y0) * seg->dxdy;
36     + // intersection with bottom edge
37     + xx1 = seg->x0 + ((SplashCoord)y + 1 - seg->y0) * seg->dxdy;
38     + // the segment may not actually extend to the top and/or bottom edges
39     + if (xx0 < xSegMin) {
40     + xx0 = xSegMin;
41     + } else if (xx0 > xSegMax) {
42     + xx0 = xSegMax;
43     + }
44     + if (xx1 < xSegMin) {
45     + xx1 = xSegMin;
46     + } else if (xx1 > xSegMax) {
47     + xx1 = xSegMax;
48     }
49     }
50     if (xx0 < xx1) {