fix: uninitialized pointer read

Signed-off-by: jianglianfang <jianglianfang@xiaomi.com>
This commit is contained in:
jianglianfang 2024-03-26 10:15:03 +08:00 committed by Xiang Xiao
parent 72e186f64a
commit 009fc1a28a

View File

@ -155,16 +155,17 @@ static void pan_display(FAR struct fb_state_s *state)
* fb_init_mem2 * fb_init_mem2
****************************************************************************/ ****************************************************************************/
static int fb_init_mem2(FAR struct fb_state_s *state, static int fb_init_mem2(FAR struct fb_state_s *state)
FAR struct fb_planeinfo_s *pinfo)
{ {
int ret; int ret;
uintptr_t buf_offset; uintptr_t buf_offset;
struct fb_planeinfo_s pinfo;
pinfo->display = state->pinfo.display + 1; memset(&pinfo, 0, sizeof(pinfo));
pinfo.display = state->pinfo.display + 1;
ret = ioctl(state->fd, FBIOGET_PLANEINFO, ret = ioctl(state->fd, FBIOGET_PLANEINFO,
(unsigned long)(uintptr_t)pinfo); &pinfo);
if (ret < 0) if (ret < 0)
{ {
int errcode = errno; int errcode = errno;
@ -175,7 +176,7 @@ static int fb_init_mem2(FAR struct fb_state_s *state,
/* Check bpp */ /* Check bpp */
if (pinfo->bpp != state->pinfo.bpp) if (pinfo.bpp != state->pinfo.bpp)
{ {
fprintf(stderr, "ERROR: fbmem2 is incorrect"); fprintf(stderr, "ERROR: fbmem2 is incorrect");
return -EINVAL; return -EINVAL;
@ -185,7 +186,7 @@ static int fb_init_mem2(FAR struct fb_state_s *state,
* It needs to be divisible by pinfo.stride * It needs to be divisible by pinfo.stride
*/ */
buf_offset = pinfo->fbmem - state->fbmem; buf_offset = pinfo.fbmem - state->fbmem;
if ((buf_offset % state->pinfo.stride) != 0) if ((buf_offset % state->pinfo.stride) != 0)
{ {
@ -202,14 +203,14 @@ static int fb_init_mem2(FAR struct fb_state_s *state,
/* Use consecutive fbmem2. */ /* Use consecutive fbmem2. */
state->mem2_yoffset = state->vinfo.yres; state->mem2_yoffset = state->vinfo.yres;
state->fbmem2 = pinfo->fbmem + state->mem2_yoffset * pinfo->stride; state->fbmem2 = pinfo.fbmem + state->mem2_yoffset * pinfo.stride;
} }
else else
{ {
/* Use non-consecutive fbmem2. */ /* Use non-consecutive fbmem2. */
state->mem2_yoffset = buf_offset / state->pinfo.stride; state->mem2_yoffset = buf_offset / state->pinfo.stride;
state->fbmem2 = pinfo->fbmem; state->fbmem2 = pinfo.fbmem;
} }
return 0; return 0;
@ -422,7 +423,6 @@ static void draw_rect(FAR struct fb_state_s *state,
int main(int argc, FAR char *argv[]) int main(int argc, FAR char *argv[])
{ {
FAR const char *fbdev = g_default_fbdev; FAR const char *fbdev = g_default_fbdev;
struct fb_planeinfo_s pinfo;
struct fb_state_s state; struct fb_state_s state;
struct fb_area_s area; struct fb_area_s area;
int nsteps; int nsteps;
@ -582,7 +582,7 @@ int main(int argc, FAR char *argv[])
if (state.pinfo.yres_virtual == (state.vinfo.yres * 2)) if (state.pinfo.yres_virtual == (state.vinfo.yres * 2))
{ {
if ((ret = fb_init_mem2(&state, &pinfo)) < 0) if ((ret = fb_init_mem2(&state)) < 0)
{ {
goto out; goto out;
} }