Skip to content

Commit

Permalink
Fixed NULL pointer dereference, thanks Ozkan Sezer
Browse files Browse the repository at this point in the history
  • Loading branch information
slouken committed Oct 23, 2016
1 parent 5b14a94 commit 39ba2ab
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions src/video/SDL_blit_N.c
Expand Up @@ -125,11 +125,7 @@ calc_swizzle32(const SDL_PixelFormat * srcfmt, const SDL_PixelFormat * dstfmt)
0x0C);
vector unsigned char vswiz;
vector unsigned int srcvec;
#define RESHIFT(X) (3 - ((X) >> 3))
Uint32 rmask = RESHIFT(srcfmt->Rshift) << (dstfmt->Rshift);
Uint32 gmask = RESHIFT(srcfmt->Gshift) << (dstfmt->Gshift);
Uint32 bmask = RESHIFT(srcfmt->Bshift) << (dstfmt->Bshift);
Uint32 amask;
Uint32 rmask, gmask, bmask, amask;

if (!srcfmt) {
srcfmt = &default_pixel_format;
Expand All @@ -138,6 +134,11 @@ calc_swizzle32(const SDL_PixelFormat * srcfmt, const SDL_PixelFormat * dstfmt)
dstfmt = &default_pixel_format;
}

#define RESHIFT(X) (3 - ((X) >> 3))
rmask = RESHIFT(srcfmt->Rshift) << (dstfmt->Rshift);
gmask = RESHIFT(srcfmt->Gshift) << (dstfmt->Gshift);
bmask = RESHIFT(srcfmt->Bshift) << (dstfmt->Bshift);

/* Use zero for alpha if either surface doesn't have alpha */
if (dstfmt->Amask) {
amask =
Expand All @@ -149,6 +150,7 @@ calc_swizzle32(const SDL_PixelFormat * srcfmt, const SDL_PixelFormat * dstfmt)
0xFFFFFFFF);
}
#undef RESHIFT

((unsigned int *) (char *) &srcvec)[0] = (rmask | gmask | bmask | amask);
vswiz = vec_add(plus, (vector unsigned char) vec_splat(srcvec, 0));
return (vswiz);
Expand Down

0 comments on commit 39ba2ab

Please sign in to comment.