[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kimgio
From: Teemu Rytilahti <tpr () d5k ! net>
Date: 2009-05-26 15:54:23
Message-ID: 1243353263.795071.7263.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 973229 by rytilahti:
Be stricter about supported files in TGAHandler to avoid crashes when non-tga file is \
trying to be processed as a tga one.
BUG:192191
M +17 -13 tga.cpp
--- trunk/KDE/kdelibs/kimgio/tga.cpp #973228:973229
@@ -88,6 +88,9 @@
s >> head.height;
s >> head.pixel_size;
s >> head.flags;
+ /*qDebug() << "id_length: " << head.id_length << " - colormap_type: " << \
head.colormap_type << " - image_type: " << head.image_type; + qDebug() << \
"colormap_index: " << head.colormap_index << " - colormap_length: " << \
head.colormap_length << " - colormap_size: " << head.colormap_size; + qDebug() << \
"x_origin: " << head.x_origin << " - y_origin: " << head.y_origin << " - width:" << \
head.width << " - height:" << head.height << " - pixelsize: " << head.pixel_size << " \
- flags: " << head.flags;*/ return s;
}
@@ -105,11 +108,21 @@
if( head.image_type == TGA_TYPE_INDEXED ||
head.image_type == TGA_TYPE_RLE_INDEXED )
{
- if( head.colormap_length > 256 || head.colormap_size != 24 )
+ if( head.colormap_length > 256 || head.colormap_size != 24 || head.colormap_type \
!= 1 ) {
return false;
}
}
+ if( head.image_type == TGA_TYPE_RGB ||
+ head.image_type == TGA_TYPE_GREY ||
+ head.image_type == TGA_TYPE_RLE_RGB ||
+ head.image_type == TGA_TYPE_RLE_GREY )
+ {
+ if( head.colormap_type != 0 )
+ {
+ return false;
+ }
+ }
if( head.width == 0 || head.height == 0 )
{
return false;
@@ -133,18 +146,14 @@
bool pal;
bool rgb;
bool grey;
- bool supported;
- TgaHeaderInfo( const TgaHeader & tga ) : rle(false), pal(false), rgb(false), \
grey(false), supported(true) + TgaHeaderInfo( const TgaHeader & tga ) : rle(false), \
pal(false), rgb(false), grey(false) {
switch( tga.image_type ) {
case TGA_TYPE_RLE_INDEXED:
rle = true;
// no break is intended!
case TGA_TYPE_INDEXED:
- if( tga.colormap_type!=1 || tga.colormap_size!=24 || tga.colormap_length>256 ) \
{
- supported = false;
- }
pal = true;
break;
@@ -164,7 +173,7 @@
default:
// Error, unknown image type.
- supported = false;
+ break;
}
}
};
@@ -177,11 +186,6 @@
img = QImage( tga.width, tga.height, QImage::Format_RGB32 );
TgaHeaderInfo info(tga);
- if( !info.supported ) {
- // File not supported.
- kDebug(399) << "This TGA file is not supported.";
- return false;
- }
// Bits 0-3 are the numbers of alpha bits (can be zero!)
const int numAlphaBits = tga.flags & 0xf;
@@ -259,7 +263,7 @@
}
uchar * src = image;
-
+
for( int y = y_start; y != y_end; y += y_step ) {
QRgb * scanline = (QRgb *) img.scanLine( y );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic