Blame malloc/tst-tcfree2.c

Packit Service f46e41
/* Test that malloc tcache catches double free.
Packit Service f46e41
   Copyright (C) 2018 Free Software Foundation, Inc.
Packit Service f46e41
   This file is part of the GNU C Library.
Packit Service f46e41
Packit Service f46e41
   The GNU C Library is free software; you can redistribute it and/or
Packit Service f46e41
   modify it under the terms of the GNU Lesser General Public
Packit Service f46e41
   License as published by the Free Software Foundation; either
Packit Service f46e41
   version 2.1 of the License, or (at your option) any later version.
Packit Service f46e41
Packit Service f46e41
   The GNU C Library is distributed in the hope that it will be useful,
Packit Service f46e41
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service f46e41
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service f46e41
   Lesser General Public License for more details.
Packit Service f46e41
Packit Service f46e41
   You should have received a copy of the GNU Lesser General Public
Packit Service f46e41
   License along with the GNU C Library; if not, see
Packit Service f46e41
   <http://www.gnu.org/licenses/>.  */
Packit Service f46e41
Packit Service f46e41
#include <errno.h>
Packit Service f46e41
#include <error.h>
Packit Service f46e41
#include <limits.h>
Packit Service f46e41
#include <malloc.h>
Packit Service f46e41
#include <stdlib.h>
Packit Service f46e41
#include <stdio.h>
Packit Service f46e41
#include <sys/signal.h>
Packit Service f46e41
Packit Service f46e41
static int
Packit Service f46e41
do_test (void)
Packit Service f46e41
{
Packit Service f46e41
  char * volatile ptrs[20];
Packit Service f46e41
  int i;
Packit Service f46e41
Packit Service f46e41
  /* Allocate enough small chunks so that when we free them all, the tcache
Packit Service f46e41
     is full, and the first one we freed is at the end of its linked list.  */
Packit Service f46e41
#define COUNT 20
Packit Service f46e41
  for (i=0; i
Packit Service f46e41
    ptrs[i] = malloc (20);
Packit Service f46e41
  for (i=0; i
Packit Service f46e41
    free (ptrs[i]);
Packit Service f46e41
  free (ptrs[0]);
Packit Service f46e41
Packit Service f46e41
  printf("FAIL: tcache double free\n");
Packit Service f46e41
  return 1;
Packit Service f46e41
}
Packit Service f46e41
Packit Service f46e41
#define TEST_FUNCTION do_test
Packit Service f46e41
#define EXPECTED_SIGNAL SIGABRT
Packit Service f46e41
#include <support/test-driver.c>