ramspeed:Fix memleak due to double malloc.

if (allocate_rw_address)
    {
      info->dest = malloc(info->size);
      info->src = malloc(info->size);
    }
  if ((info->dest == NULL && !info->allocate_rw_address) || info->size == 0)
    {
      printf(RAMSPEED_PREFIX "Missing required arguments\n");
      goto out;
    }
  else
    {
      /* We need to automatically apply for memory */
      printf(RAMSPEED_PREFIX "Allocate RW buffers on heap\n");
      info->dest = malloc(info->size);
      if (info->dest == NULL)
        {
          printf(RAMSPEED_PREFIX "Dest Alloc Memory Failed!\n");
          goto out;
        }
      info->src = malloc(info->size);
      if (info->src == NULL)
        {
          printf(RAMSPEED_PREFIX "Src Alloc Memory Failed!\n");
          goto out;
        }
    }

Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
This commit is contained in:
chenrun1 2024-04-11 20:40:49 +08:00 committed by Xiang Xiao
parent e04782816f
commit 875f2fcc1e

View File

@ -187,22 +187,6 @@ static void parse_commandline(int argc, FAR char **argv,
} }
} }
if (info->allocate_rw_address)
{
info->dest = malloc(info->size);
if (info->dest == NULL)
{
printf(RAMSPEED_PREFIX "Dest Alloc Memory Failed!\n");
}
info->src = malloc(info->size);
if (info->src == NULL)
{
free(info->dest);
printf(RAMSPEED_PREFIX "Src Alloc Memory Failed!\n");
}
}
if ((info->dest == NULL && !info->allocate_rw_address) || info->size == 0) if ((info->dest == NULL && !info->allocate_rw_address) || info->size == 0)
{ {
printf(RAMSPEED_PREFIX "Missing required arguments\n"); printf(RAMSPEED_PREFIX "Missing required arguments\n");