Merge branch 'master' into phcoder/ports/alpha

This commit is contained in:
Vladimir Serbinenko committed 2013-10-25 21:40:54 +02:00
commit 7cb450b45e
8 files changed
+125 -75

No files matched your search

+35
View File
@@ -1,3 +1,38 @@
2013-10-25 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/video/bitmap_scale.c: Use unsigned arithmetics when
appropriate.
2013-10-25 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/video/fb/fbblit.c: Use (255 ^ x) rather than (255 - x).
Use unsigned divisions rather than signed variants.
2013-10-25 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/video/readers/png.c (grub_png_convert_image): Use
unsigned arithmetics.
Add missing break.
2013-10-25 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/video/readers/jpeg.c: Use unsigned where appropriate.
2013-10-25 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/fs/zfs/zfs.c (xor_out): Use unsigned modular arithmetics
rather than signed one.
(recovery): Likewise.
2013-10-25 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/net/dns.c (hash): Use unsigned arithmetic.
2013-10-25 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/io/gzio.c (test_zlib_header): Use undigned modulo rather
than signed.
2013-10-25 Jon McCune <jonmccune@google.com>
* docs/grub.texi: Cleanup security documentation around signatures.
+4 -4
View File
@@ -1278,9 +1278,9 @@ static const grub_uint8_t poly = 0x1d;
/* perform the operation a ^= b * (x ** (known_idx * recovery_pow) ) */
static inline void
xor_out (grub_uint8_t *a, const grub_uint8_t *b, grub_size_t s,
int known_idx, int recovery_pow)
unsigned known_idx, unsigned recovery_pow)
{
int add;
unsigned add;
/* Simple xor. */
if (known_idx == 0 || recovery_pow == 0)
@@ -1307,7 +1307,7 @@ gf_mul (grub_uint8_t a, grub_uint8_t b)
static grub_err_t
recovery (grub_uint8_t *bufs[4], grub_size_t s, const int nbufs,
const unsigned *powers,
const int *idx)
const unsigned *idx)
{
grub_dprintf ("zfs", "recovering %u buffers\n", nbufs);
/* Now we have */
@@ -1494,7 +1494,7 @@ read_device (grub_uint64_t offset, struct grub_zfs_device_desc *desc,
grub_size_t orig_len = len;
grub_uint8_t *recovery_buf[4];
grub_size_t recovery_len[4];
int recovery_idx[4];
unsigned recovery_idx[4];
unsigned failed_devices = 0;
int idx, orig_idx;
+1 -1
View File
@@ -1178,7 +1178,7 @@ test_zlib_header (grub_gzio_t gzio)
return 0;
}
if ((cmf * 256 + flg) % 31)
if ((cmf * 256U + flg) % 31U)
{
grub_error (GRUB_ERR_BAD_COMPRESSED_DATA, N_("unsupported gzip format"));
return 0;
+1 -1
View File
@@ -114,7 +114,7 @@ struct recv_data
static inline int
hash (const char *str)
{
int v = 0, xn = 1;
unsigned v = 0, xn = 1;
const char *ptr;
for (ptr = str; *ptr; )
{
+42 -30
View File
@@ -123,10 +123,16 @@ grub_video_bitmap_create_scaled (struct grub_video_bitmap **dst,
}
static grub_err_t
make_h_align (int *x, int *w, int new_w,
make_h_align (unsigned *x, unsigned *w, unsigned new_w,
grub_video_bitmap_h_align_t h_align)
{
grub_err_t ret = GRUB_ERR_NONE;
if (new_w >= *w)
{
*x = 0;
*w = new_w;
return GRUB_ERR_NONE;
}
switch (h_align)
{
case GRUB_VIDEO_BITMAP_H_ALIGN_LEFT:
@@ -147,10 +153,16 @@ make_h_align (int *x, int *w, int new_w,
}
static grub_err_t
make_v_align (int *y, int *h, int new_h,
make_v_align (unsigned *y, unsigned *h, unsigned new_h,
grub_video_bitmap_v_align_t v_align)
{
grub_err_t ret = GRUB_ERR_NONE;
if (new_h >= *h)
{
*y = 0;
*h = new_h;
return GRUB_ERR_NONE;
}
switch (v_align)
{
case GRUB_VIDEO_BITMAP_V_ALIGN_TOP:
@@ -194,14 +206,14 @@ grub_video_bitmap_scale_proportional (struct grub_video_bitmap **dst,
if (ret != GRUB_ERR_NONE)
return ret; /* Error. */
int dx0 = 0;
int dy0 = 0;
int dw = dst_width;
int dh = dst_height;
int sx0 = 0;
int sy0 = 0;
int sw = src->mode_info.width;
int sh = src->mode_info.height;
unsigned dx0 = 0;
unsigned dy0 = 0;
unsigned dw = dst_width;
unsigned dh = dst_height;
unsigned sx0 = 0;
unsigned sy0 = 0;
unsigned sw = src->mode_info.width;
unsigned sh = src->mode_info.height;
switch (selection_method)
{
@@ -345,26 +357,26 @@ scale_nn (struct grub_video_bitmap *dst, struct grub_video_bitmap *src)
grub_uint8_t *ddata = dst->data;
grub_uint8_t *sdata = src->data;
int dw = dst->mode_info.width;
int dh = dst->mode_info.height;
int sw = src->mode_info.width;
int sh = src->mode_info.height;
int dstride = dst->mode_info.pitch;
int sstride = src->mode_info.pitch;
unsigned dw = dst->mode_info.width;
unsigned dh = dst->mode_info.height;
unsigned sw = src->mode_info.width;
unsigned sh = src->mode_info.height;
unsigned dstride = dst->mode_info.pitch;
unsigned sstride = src->mode_info.pitch;
/* bytes_per_pixel is the same for both src and dst. */
int bytes_per_pixel = dst->mode_info.bytes_per_pixel;
unsigned bytes_per_pixel = dst->mode_info.bytes_per_pixel;
int dy;
unsigned dy;
for (dy = 0; dy < dh; dy++)
{
int dx;
unsigned dx;
for (dx = 0; dx < dw; dx++)
{
grub_uint8_t *dptr;
grub_uint8_t *sptr;
int sx;
int sy;
int comp;
unsigned sx;
unsigned sy;
unsigned comp;
/* Compute the source coordinate that the destination coordinate
maps to. Note: sx/sw = dx/dw => sx = sw*dx/dw. */
@@ -402,25 +414,25 @@ scale_bilinear (struct grub_video_bitmap *dst, struct grub_video_bitmap *src)
grub_uint8_t *ddata = dst->data;
grub_uint8_t *sdata = src->data;
int dw = dst->mode_info.width;
int dh = dst->mode_info.height;
int sw = src->mode_info.width;
int sh = src->mode_info.height;
unsigned dw = dst->mode_info.width;
unsigned dh = dst->mode_info.height;
unsigned sw = src->mode_info.width;
unsigned sh = src->mode_info.height;
int dstride = dst->mode_info.pitch;
int sstride = src->mode_info.pitch;
/* bytes_per_pixel is the same for both src and dst. */
int bytes_per_pixel = dst->mode_info.bytes_per_pixel;
int dy;
unsigned dy;
for (dy = 0; dy < dh; dy++)
{
int dx;
unsigned dx;
for (dx = 0; dx < dw; dx++)
{
grub_uint8_t *dptr;
grub_uint8_t *sptr;
int sx;
int sy;
unsigned sx;
unsigned sy;
int comp;
/* Compute the source coordinate that the destination coordinate
+27 -27
View File
@@ -1191,11 +1191,11 @@ grub_video_fbblit_blend (struct grub_video_fbblit_info *dst,
&dst_green, &dst_blue, &dst_alpha);
dst_red = (((src_red * src_alpha)
+ (dst_red * (255 - src_alpha))) / 255);
+ (dst_red * (255 ^ src_alpha))) / 255U);
dst_green = (((src_green * src_alpha)
+ (dst_green * (255 - src_alpha))) / 255);
+ (dst_green * (255 ^ src_alpha))) / 255U);
dst_blue = (((src_blue * src_alpha)
+ (dst_blue * (255 - src_alpha))) / 255);
+ (dst_blue * (255 ^ src_alpha))) / 255U);
dst_alpha = src_alpha;
dst_color = grub_video_fb_map_rgba (dst_red, dst_green, dst_blue,
@@ -1270,11 +1270,11 @@ grub_video_fbblit_blend_BGRA8888_RGBA8888 (struct grub_video_fbblit_info *dst,
color = *dstptr;
dr = (color >> 16) & 0xFF;
dr = (dr * (255 - a) + sr * a) / 255;
dr = (dr * (255 ^ a) + sr * a) / 255U;
dg = (color >> 8) & 0xFF;
dg = (dg * (255 - a) + sg * a) / 255;
dg = (dg * (255 ^ a) + sg * a) / 255U;
db = (color >> 0) & 0xFF;
db = (db * (255 - a) + sb * a) / 255;
db = (db * (255 ^ a) + sb * a) / 255U;
}
color = (a << 24) | (dr << 16) | (dg << 8) | db;
@@ -1360,9 +1360,9 @@ grub_video_fbblit_blend_BGR888_RGBA8888 (struct grub_video_fbblit_info *dst,
db = dstptr[2];
#endif
db = (db * (255 - a) + sb * a) / 255;
dg = (dg * (255 - a) + sg * a) / 255;
dr = (dr * (255 - a) + sr * a) / 255;
db = (db * (255 ^ a) + sb * a) / 255U;
dg = (dg * (255 ^ a) + sg * a) / 255U;
dr = (dr * (255 ^ a) + sr * a) / 255U;
}
#ifndef GRUB_CPU_WORDS_BIGENDIAN
@@ -1440,9 +1440,9 @@ grub_video_fbblit_blend_RGBA8888_RGBA8888 (struct grub_video_fbblit_info *dst,
dg = (color >> 8) & 0xFF;
db = (color >> 16) & 0xFF;
dr = (dr * (255 - a) + sr * a) / 255;
dg = (dg * (255 - a) + sg * a) / 255;
db = (db * (255 - a) + sb * a) / 255;
dr = (dr * (255 ^ a) + sr * a) / 255U;
dg = (dg * (255 ^ a) + sg * a) / 255U;
db = (db * (255 ^ a) + sb * a) / 255U;
color = (a << 24) | (db << 16) | (dg << 8) | dr;
@@ -1525,9 +1525,9 @@ grub_video_fbblit_blend_RGB888_RGBA8888 (struct grub_video_fbblit_info *dst,
dr = dstptr[2];
#endif
dr = (dr * (255 - a) + sr * a) / 255;
dg = (dg * (255 - a) + sg * a) / 255;
db = (db * (255 - a) + sb * a) / 255;
dr = (dr * (255 ^ a) + sr * a) / 255U;
dg = (dg * (255 ^ a) + sg * a) / 255U;
db = (db * (255 ^ a) + sb * a) / 255U;
#ifndef GRUB_CPU_WORDS_BIGENDIAN
*dstptr++ = dr;
@@ -1601,9 +1601,9 @@ grub_video_fbblit_blend_index_RGBA8888 (struct grub_video_fbblit_info *dst,
grub_video_fb_unmap_color_int (dst, *dstptr, &dr, &dg, &db, &da);
dr = (dr * (255 - a) + sr * a) / 255;
dg = (dg * (255 - a) + sg * a) / 255;
db = (db * (255 - a) + sb * a) / 255;
dr = (dr * (255 ^ a) + sr * a) / 255U;
dg = (dg * (255 ^ a) + sg * a) / 255U;
db = (db * (255 ^ a) + sb * a) / 255U;
color = grub_video_fb_map_rgb(dr, dg, db);
@@ -1683,9 +1683,9 @@ grub_video_fbblit_blend_XXXA8888_1bit (struct grub_video_fbblit_info *dst,
grub_uint8_t d2 = (*dstptr >> 8) & 0xFF;
grub_uint8_t d3 = (*dstptr >> 16) & 0xFF;
d1 = (d1 * (255 - a) + s1 * a) / 255;
d2 = (d2 * (255 - a) + s2 * a) / 255;
d3 = (d3 * (255 - a) + s3 * a) / 255;
d1 = (d1 * (255 ^ a) + s1 * a) / 255U;
d2 = (d2 * (255 ^ a) + s2 * a) / 255U;
d3 = (d3 * (255 ^ a) + s3 * a) / 255U;
*dstptr = (a << 24) | (d3 << 16) | (d2 << 8) | d1;
}
@@ -1791,9 +1791,9 @@ grub_video_fbblit_blend_XXX888_1bit (struct grub_video_fbblit_info *dst,
grub_uint8_t d2 = (*(grub_uint32_t *) dstptr >> 8) & 0xFF;
grub_uint8_t d3 = (*(grub_uint32_t *) dstptr >> 16) & 0xFF;
((grub_uint8_t *) dstptr)[0] = (d1 * (255 - a) + s1 * a) / 255;
((grub_uint8_t *) dstptr)[1] = (d2 * (255 - a) + s2 * a) / 255;
((grub_uint8_t *) dstptr)[2] = (d3 * (255 - a) + s3 * a) / 255;
((grub_uint8_t *) dstptr)[0] = (d1 * (255 ^ a) + s1 * a) / 255U;
((grub_uint8_t *) dstptr)[1] = (d2 * (255 ^ a) + s2 * a) / 255U;
((grub_uint8_t *) dstptr)[2] = (d3 * (255 ^ a) + s3 * a) / 255U;
}
srcmask >>= 1;
@@ -1887,9 +1887,9 @@ grub_video_fbblit_blend_XXX565_1bit (struct grub_video_fbblit_info *dst,
grub_uint8_t d2 = (*dstptr >> 5) & 0x3F;
grub_uint8_t d3 = (*dstptr >> 11) & 0x1F;
d1 = (d1 * (255 - a) + s1 * a) / 255;
d2 = (d2 * (255 - a) + s2 * a) / 255;
d3 = (d3 * (255 - a) + s3 * a) / 255;
d1 = (d1 * (255 ^ a) + s1 * a) / 255U;
d2 = (d2 * (255 ^ a) + s2 * a) / 255U;
d3 = (d3 * (255 ^ a) + s3 * a) / 255U;
*dstptr = (d1 & 0x1f) | ((d2 & 0x3f) << 5) | ((d3 & 0x1f) << 11);
}
+8 -7
View File
@@ -80,8 +80,8 @@ struct grub_jpeg_data
struct grub_video_bitmap **bitmap;
grub_uint8_t *bitmap_ptr;
int image_width;
int image_height;
unsigned image_width;
unsigned image_height;
grub_uint8_t *huff_value[4];
int huff_offset[4][16];
@@ -94,9 +94,9 @@ struct grub_jpeg_data
jpeg_data_unit_t crdu;
jpeg_data_unit_t cbdu;
int vs, hs;
unsigned vs, hs;
int dri;
int r1;
unsigned r1;
int dc_value[3];
@@ -613,7 +613,7 @@ grub_jpeg_decode_sos (struct grub_jpeg_data *data)
static grub_err_t
grub_jpeg_decode_data (struct grub_jpeg_data *data)
{
int c1, vb, hb, nr1, nc1;
unsigned c1, vb, hb, nr1, nc1;
int rst = data->dri;
vb = data->vs * 8;
@@ -626,7 +626,7 @@ grub_jpeg_decode_data (struct grub_jpeg_data *data)
for (c1 = 0; c1 < nc1 && (!data->dri || rst);
c1++, rst--, data->bitmap_ptr += hb * 3)
{
int r2, c2, nr2, nc2;
unsigned r2, c2, nr2, nc2;
grub_uint8_t *ptr2;
for (r2 = 0; r2 < data->vs; r2++)
@@ -649,7 +649,8 @@ grub_jpeg_decode_data (struct grub_jpeg_data *data)
for (r2 = 0; r2 < nr2; r2++, ptr2 += (data->image_width - nc2) * 3)
for (c2 = 0; c2 < nc2; c2++, ptr2 += 3)
{
int i0, yy;
unsigned i0;
int yy;
i0 = (r2 / data->vs) * 8 + (c2 / data->hs);
yy = data->ydu[(r2 / 8) * 2 + (c2 / 8)][(r2 % 8) * 8 + (c2 % 8)];
+7 -5
View File
@@ -97,7 +97,8 @@ struct grub_png_data
grub_uint32_t next_offset;
int image_width, image_height, bpp, is_16bit;
unsigned image_width, image_height;
int bpp, is_16bit;
int raw_bytes, is_gray, is_alpha, is_palette;
int row_bytes, color_bits;
grub_uint8_t *image_data;
@@ -818,7 +819,7 @@ static const grub_uint8_t png_magic[8] =
static void
grub_png_convert_image (struct grub_png_data *data)
{
int i;
unsigned i;
grub_uint8_t *d1, *d2;
d1 = (*data->bitmap)->data;
@@ -848,11 +849,11 @@ grub_png_convert_image (struct grub_png_data *data)
grub_uint8_t *d1c, *d2c;
int shift;
int mask = (1 << data->color_bits) - 1;
int j;
unsigned j;
if (data->is_gray)
for (i = 0; i < (1 << data->color_bits); i++)
for (i = 0; i < (1U << data->color_bits); i++)
{
grub_uint8_t col = (0xff * i) / ((1 << data->color_bits) - 1);
grub_uint8_t col = (0xff * i) / ((1U << data->color_bits) - 1);
palette[i][0] = col;
palette[i][1] = col;
palette[i][2] = col;
@@ -910,6 +911,7 @@ grub_png_convert_image (struct grub_png_data *data)
d1[B4] = d2[3];
d1[A4] = d2[1];
}
break;
case 2:
if (data->is_16bit)
/* 16-bit gray without alpha. */