|
Line
Link Here
|
| 0 |
-- xmms-1.2.10+cvs20060429.orig/xmms/bmp.c |
0 |
++ xmms-1.2.10+cvs20060429/xmms/bmp.c |
|
Lines 19-24
Link Here
|
| 19 |
*/ |
19 |
*/ |
| 20 |
#include "xmms.h" |
20 |
#include "xmms.h" |
| 21 |
|
21 |
|
|
|
22 |
#if HAVE_STDINT_H |
| 23 |
#include <stdint.h> |
| 24 |
#elif !defined(UINT32_MAX) |
| 25 |
#define UINT32_MAX 0xffffffffU |
| 26 |
#endif |
| 27 |
|
| 22 |
typedef struct tagRGBQUAD |
28 |
typedef struct tagRGBQUAD |
| 23 |
{ |
29 |
{ |
| 24 |
guchar rgbBlue; |
30 |
guchar rgbBlue; |
|
Lines 184-190
Link Here
|
| 184 |
} |
190 |
} |
| 185 |
else if (bitcount != 24 && bitcount != 16 && bitcount != 32) |
191 |
else if (bitcount != 24 && bitcount != 16 && bitcount != 32) |
| 186 |
{ |
192 |
{ |
| 187 |
gint ncols, i; |
193 |
guint32 ncols, i; |
| 188 |
|
194 |
|
| 189 |
ncols = offset - headSize - 14; |
195 |
ncols = offset - headSize - 14; |
| 190 |
if (headSize == 12) |
196 |
if (headSize == 12) |
|
Lines 200-209
Link Here
|
| 200 |
} |
206 |
} |
| 201 |
} |
207 |
} |
| 202 |
fseek(file, offset, SEEK_SET); |
208 |
fseek(file, offset, SEEK_SET); |
|
|
209 |
/* verify buffer size */ |
| 210 |
if (!h || !w || |
| 211 |
w > (((UINT32_MAX - 3) / 3) / h) || |
| 212 |
h > (((UINT32_MAX - 3) / 3) / w)) { |
| 213 |
g_warning("read_bmp(): width(%u)*height(%u) too large", w, h); |
| 214 |
fclose(file); |
| 215 |
return NULL; |
| 216 |
} |
| 217 |
data = g_malloc0((w * 3 * h) + 3); /* +3 is just for safety */ |
| 203 |
buffer = g_malloc(imgsize); |
218 |
buffer = g_malloc(imgsize); |
| 204 |
fread(buffer, imgsize, 1, file); |
219 |
fread(buffer, imgsize, 1, file); |
| 205 |
fclose(file); |
220 |
fclose(file); |
| 206 |
data = g_malloc0((w * 3 * h) + 3); /* +3 is just for safety */ |
|
|
| 207 |
|
221 |
|
| 208 |
if (bitcount == 1) |
222 |
if (bitcount == 1) |
| 209 |
read_1b_rgb(buffer, imgsize, data, w, h, rgb_quads); |
223 |
read_1b_rgb(buffer, imgsize, data, w, h, rgb_quads); |