Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
1eed4341
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1eed4341
编写于
4月 24, 2013
作者:
B
bae
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8012438: Better image validation
Reviewed-by: prr
上级
bf6d00a0
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
59 addition
and
37 deletion
+59
-37
src/share/classes/java/awt/image/ComponentSampleModel.java
src/share/classes/java/awt/image/ComponentSampleModel.java
+8
-8
src/share/classes/java/awt/image/PixelInterleavedSampleModel.java
...e/classes/java/awt/image/PixelInterleavedSampleModel.java
+5
-5
src/share/classes/java/awt/image/Raster.java
src/share/classes/java/awt/image/Raster.java
+5
-9
src/share/classes/sun/awt/image/ByteBandedRaster.java
src/share/classes/sun/awt/image/ByteBandedRaster.java
+12
-4
src/share/classes/sun/awt/image/ByteComponentRaster.java
src/share/classes/sun/awt/image/ByteComponentRaster.java
+4
-2
src/share/classes/sun/awt/image/BytePackedRaster.java
src/share/classes/sun/awt/image/BytePackedRaster.java
+2
-1
src/share/classes/sun/awt/image/IntegerComponentRaster.java
src/share/classes/sun/awt/image/IntegerComponentRaster.java
+4
-2
src/share/classes/sun/awt/image/ShortBandedRaster.java
src/share/classes/sun/awt/image/ShortBandedRaster.java
+11
-4
src/share/classes/sun/awt/image/ShortComponentRaster.java
src/share/classes/sun/awt/image/ShortComponentRaster.java
+4
-2
src/share/native/sun/awt/medialib/awt_ImagingLib.c
src/share/native/sun/awt/medialib/awt_ImagingLib.c
+4
-0
未找到文件。
src/share/classes/java/awt/image/ComponentSampleModel.java
浏览文件 @
1eed4341
...
...
@@ -148,7 +148,7 @@ public class ComponentSampleModel extends SampleModel
this
.
pixelStride
=
pixelStride
;
this
.
scanlineStride
=
scanlineStride
;
this
.
bandOffsets
=
(
int
[])
bandOffsets
.
clone
();
numBands
=
bandOffsets
.
length
;
numBands
=
this
.
bandOffsets
.
length
;
if
(
pixelStride
<
0
)
{
throw
new
IllegalArgumentException
(
"Pixel stride must be >= 0"
);
}
...
...
@@ -223,24 +223,24 @@ public class ComponentSampleModel extends SampleModel
(
dataType
>
DataBuffer
.
TYPE_DOUBLE
))
{
throw
new
IllegalArgumentException
(
"Unsupported dataType."
);
}
int
maxBank
=
bankIndices
[
0
];
int
maxBank
=
this
.
bankIndices
[
0
];
if
(
maxBank
<
0
)
{
throw
new
IllegalArgumentException
(
"Index of bank 0 is less than "
+
"0 ("
+
maxBank
+
")"
);
}
for
(
int
i
=
1
;
i
<
bankIndices
.
length
;
i
++)
{
if
(
bankIndices
[
i
]
>
maxBank
)
{
maxBank
=
bankIndices
[
i
];
for
(
int
i
=
1
;
i
<
this
.
bankIndices
.
length
;
i
++)
{
if
(
this
.
bankIndices
[
i
]
>
maxBank
)
{
maxBank
=
this
.
bankIndices
[
i
];
}
else
if
(
bankIndices
[
i
]
<
0
)
{
else
if
(
this
.
bankIndices
[
i
]
<
0
)
{
throw
new
IllegalArgumentException
(
"Index of bank "
+
i
+
" is less than 0 ("
+
maxBank
+
")"
);
}
}
numBanks
=
maxBank
+
1
;
numBands
=
bandOffsets
.
length
;
if
(
bandOffsets
.
length
!=
bankIndices
.
length
)
{
numBands
=
this
.
bandOffsets
.
length
;
if
(
this
.
bandOffsets
.
length
!=
this
.
bankIndices
.
length
)
{
throw
new
IllegalArgumentException
(
"Length of bandOffsets must "
+
"equal length of bankIndices."
);
}
...
...
src/share/classes/java/awt/image/PixelInterleavedSampleModel.java
浏览文件 @
1eed4341
...
...
@@ -85,11 +85,11 @@ public class PixelInterleavedSampleModel extends ComponentSampleModel
int
scanlineStride
,
int
bandOffsets
[])
{
super
(
dataType
,
w
,
h
,
pixelStride
,
scanlineStride
,
bandOffsets
);
int
minBandOff
=
bandOffsets
[
0
];
int
maxBandOff
=
bandOffsets
[
0
];
for
(
int
i
=
1
;
i
<
bandOffsets
.
length
;
i
++)
{
minBandOff
=
Math
.
min
(
minBandOff
,
bandOffsets
[
i
]);
maxBandOff
=
Math
.
max
(
maxBandOff
,
bandOffsets
[
i
]);
int
minBandOff
=
this
.
bandOffsets
[
0
];
int
maxBandOff
=
this
.
bandOffsets
[
0
];
for
(
int
i
=
1
;
i
<
this
.
bandOffsets
.
length
;
i
++)
{
minBandOff
=
Math
.
min
(
minBandOff
,
this
.
bandOffsets
[
i
]);
maxBandOff
=
Math
.
max
(
maxBandOff
,
this
.
bandOffsets
[
i
]);
}
maxBandOff
-=
minBandOff
;
if
(
maxBandOff
>
scanlineStride
)
{
...
...
src/share/classes/java/awt/image/Raster.java
浏览文件 @
1eed4341
...
...
@@ -257,15 +257,10 @@ public class Raster {
int
bandOffsets
[],
Point
location
)
{
DataBuffer
d
;
int
bands
=
bandOffsets
.
length
;
int
maxBandOff
=
bandOffsets
[
0
];
for
(
int
i
=
1
;
i
<
bands
;
i
++)
{
if
(
bandOffsets
[
i
]
>
maxBandOff
)
{
maxBandOff
=
bandOffsets
[
i
];
}
}
int
size
=
maxBandOff
+
scanlineStride
*(
h
-
1
)
+
pixelStride
*(
w
-
1
)
+
1
;
int
size
=
scanlineStride
*
(
h
-
1
)
+
// fisrt (h - 1) scans
pixelStride
*
w
;
// last scan
switch
(
dataType
)
{
case
DataBuffer
.
TYPE_BYTE
:
d
=
new
DataBufferByte
(
size
);
...
...
@@ -397,7 +392,8 @@ public class Raster {
}
}
int
banks
=
maxBank
+
1
;
int
size
=
maxBandOff
+
scanlineStride
*(
h
-
1
)
+
(
w
-
1
)
+
1
;
int
size
=
scanlineStride
*
(
h
-
1
)
+
// fisrt (h - 1) scans
w
;
// last scan
switch
(
dataType
)
{
case
DataBuffer
.
TYPE_BYTE
:
...
...
src/share/classes/sun/awt/image/ByteBandedRaster.java
浏览文件 @
1eed4341
...
...
@@ -755,6 +755,13 @@ public class ByteBandedRaster extends SunWritableRaster {
+
scanlineStride
);
}
for
(
int
i
=
0
;
i
<
data
.
length
;
i
++)
{
if
(
scanlineStride
>
data
[
i
].
length
)
{
throw
new
RasterFormatException
(
"Incorrect scanline stride: "
+
scanlineStride
);
}
}
// Make sure data for Raster is in a legal range
for
(
int
i
=
0
;
i
<
dataOffsets
.
length
;
i
++)
{
if
(
dataOffsets
[
i
]
<
0
)
{
...
...
@@ -765,19 +772,20 @@ public class ByteBandedRaster extends SunWritableRaster {
}
int
lastScanOffset
=
(
height
-
1
)
*
scanlineStride
;
int
lastPixelOffset
=
lastScanOffset
+
(
width
-
1
);
if
(
lastPixelOffset
<
lastScanOffset
)
{
if
(
(
width
-
1
)
>
(
Integer
.
MAX_VALUE
-
lastScanOffset
)
)
{
throw
new
RasterFormatException
(
"Invalid raster dimension"
);
}
int
lastPixelOffset
=
lastScanOffset
+
(
width
-
1
);
int
maxIndex
=
0
;
int
index
;
for
(
int
i
=
0
;
i
<
numDataElements
;
i
++)
{
index
=
lastPixelOffset
+
dataOffsets
[
i
];
if
(
index
<
lastPixelOffset
)
{
if
(
dataOffsets
[
i
]
>
(
Integer
.
MAX_VALUE
-
lastPixelOffset
))
{
throw
new
RasterFormatException
(
"Invalid raster dimension"
);
}
index
=
lastPixelOffset
+
dataOffsets
[
i
];
if
(
index
>
maxIndex
)
{
maxIndex
=
index
;
}
...
...
src/share/classes/sun/awt/image/ByteComponentRaster.java
浏览文件 @
1eed4341
...
...
@@ -887,7 +887,8 @@ public class ByteComponentRaster extends SunWritableRaster {
// we can be sure that width and height are greater than 0
if
(
scanlineStride
<
0
||
scanlineStride
>
(
Integer
.
MAX_VALUE
/
height
))
scanlineStride
>
(
Integer
.
MAX_VALUE
/
height
)
||
scanlineStride
>
data
.
length
)
{
// integer overflow
throw
new
RasterFormatException
(
"Incorrect scanline stride: "
...
...
@@ -896,7 +897,8 @@ public class ByteComponentRaster extends SunWritableRaster {
int
lastScanOffset
=
(
height
-
1
)
*
scanlineStride
;
if
(
pixelStride
<
0
||
pixelStride
>
(
Integer
.
MAX_VALUE
/
width
))
pixelStride
>
(
Integer
.
MAX_VALUE
/
width
)
||
pixelStride
>
data
.
length
)
{
// integer overflow
throw
new
RasterFormatException
(
"Incorrect pixel stride: "
...
...
src/share/classes/sun/awt/image/BytePackedRaster.java
浏览文件 @
1eed4341
...
...
@@ -1387,7 +1387,8 @@ public class BytePackedRaster extends SunWritableRaster {
}
if
(
scanlineStride
<
0
||
scanlineStride
>
(
Integer
.
MAX_VALUE
/
height
))
scanlineStride
>
(
Integer
.
MAX_VALUE
/
height
)
||
scanlineStride
>
data
.
length
)
{
throw
new
RasterFormatException
(
"Invalid scanline stride"
);
}
...
...
src/share/classes/sun/awt/image/IntegerComponentRaster.java
浏览文件 @
1eed4341
...
...
@@ -656,7 +656,8 @@ public class IntegerComponentRaster extends SunWritableRaster {
// we can be sure that width and height are greater than 0
if
(
scanlineStride
<
0
||
scanlineStride
>
(
Integer
.
MAX_VALUE
/
height
))
scanlineStride
>
(
Integer
.
MAX_VALUE
/
height
)
||
scanlineStride
>
data
.
length
)
{
// integer overflow
throw
new
RasterFormatException
(
"Incorrect scanline stride: "
...
...
@@ -665,7 +666,8 @@ public class IntegerComponentRaster extends SunWritableRaster {
int
lastScanOffset
=
(
height
-
1
)
*
scanlineStride
;
if
(
pixelStride
<
0
||
pixelStride
>
(
Integer
.
MAX_VALUE
/
width
))
pixelStride
>
(
Integer
.
MAX_VALUE
/
width
)
||
pixelStride
>
data
.
length
)
{
// integer overflow
throw
new
RasterFormatException
(
"Incorrect pixel stride: "
...
...
src/share/classes/sun/awt/image/ShortBandedRaster.java
浏览文件 @
1eed4341
...
...
@@ -754,6 +754,13 @@ public class ShortBandedRaster extends SunWritableRaster {
+
scanlineStride
);
}
for
(
int
i
=
0
;
i
<
data
.
length
;
i
++)
{
if
(
scanlineStride
>
data
[
i
].
length
)
{
throw
new
RasterFormatException
(
"Incorrect scanline stride: "
+
scanlineStride
);
}
}
// Make sure data for Raster is in a legal range
for
(
int
i
=
0
;
i
<
dataOffsets
.
length
;
i
++)
{
if
(
dataOffsets
[
i
]
<
0
)
{
...
...
@@ -764,19 +771,19 @@ public class ShortBandedRaster extends SunWritableRaster {
}
int
lastScanOffset
=
(
height
-
1
)
*
scanlineStride
;
int
lastPixelOffset
=
lastScanOffset
+
(
width
-
1
);
if
(
lastPixelOffset
<
lastScanOffset
)
{
if
((
width
-
1
)
>
(
Integer
.
MAX_VALUE
-
lastScanOffset
))
{
throw
new
RasterFormatException
(
"Invalid raster dimension"
);
}
int
lastPixelOffset
=
lastScanOffset
+
(
width
-
1
);
int
maxIndex
=
0
;
int
index
;
for
(
int
i
=
0
;
i
<
numDataElements
;
i
++)
{
index
=
lastPixelOffset
+
dataOffsets
[
i
];
if
(
index
<
lastPixelOffset
)
{
if
(
dataOffsets
[
i
]
>
(
Integer
.
MAX_VALUE
-
lastPixelOffset
))
{
throw
new
RasterFormatException
(
"Invalid raster dimension"
);
}
index
=
lastPixelOffset
+
dataOffsets
[
i
];
if
(
index
>
maxIndex
)
{
maxIndex
=
index
;
}
...
...
src/share/classes/sun/awt/image/ShortComponentRaster.java
浏览文件 @
1eed4341
...
...
@@ -821,7 +821,8 @@ public class ShortComponentRaster extends SunWritableRaster {
// we can be sure that width and height are greater than 0
if
(
scanlineStride
<
0
||
scanlineStride
>
(
Integer
.
MAX_VALUE
/
height
))
scanlineStride
>
(
Integer
.
MAX_VALUE
/
height
)
||
scanlineStride
>
data
.
length
)
{
// integer overflow
throw
new
RasterFormatException
(
"Incorrect scanline stride: "
...
...
@@ -830,7 +831,8 @@ public class ShortComponentRaster extends SunWritableRaster {
int
lastScanOffset
=
(
height
-
1
)
*
scanlineStride
;
if
(
pixelStride
<
0
||
pixelStride
>
(
Integer
.
MAX_VALUE
/
width
))
pixelStride
>
(
Integer
.
MAX_VALUE
/
width
)
||
pixelStride
>
data
.
length
)
{
// integer overflow
throw
new
RasterFormatException
(
"Incorrect pixel stride: "
...
...
src/share/native/sun/awt/medialib/awt_ImagingLib.c
浏览文件 @
1eed4341
...
...
@@ -1177,6 +1177,10 @@ static int lookupShortData(mlib_image* src, mlib_image* dst,
static
int
indexes
[
NLUT
]
=
INDEXES
;
if
(
src
->
width
!=
dst
->
width
||
src
->
height
!=
dst
->
height
)
{
return
0
;
}
for
(
y
=
0
;
y
<
src
->
height
;
y
++
)
{
int
nloop
,
nx
;
int
npix
=
src
->
width
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录