llvm-capstone/compiler-rt/test/safestack/buffer-copy.c
Peter Collingbourne b64d0b1e6d Protection against stack-based memory corruption errors using SafeStack: compiler-rt runtime support library
This patch adds runtime support for the Safe Stack protection to compiler-rt
(see http://reviews.llvm.org/D6094 for the detailed description of the
Safe Stack).

This patch is our implementation of the safe stack on top of compiler-rt. The
patch adds basic runtime support for the safe stack to compiler-rt that
manages unsafe stack allocation/deallocation for each thread.

Original patch by Volodymyr Kuznetsov and others at the Dependable Systems
Lab at EPFL; updates and upstreaming by myself.

Differential Revision: http://reviews.llvm.org/D6096

llvm-svn: 239763
2015-06-15 21:08:47 +00:00

26 lines
554 B
C

// RUN: %clang_safestack %s -o %t
// RUN: %run %t
#include "utils.h"
// Test that loads/stores work correctly for variables on the unsafe stack.
int main(int argc, char **argv)
{
int i;
char buffer[128];
// check that we can write to a buffer
for (i = 0; argv[0][i] && i < sizeof (buffer) - 1; ++i)
buffer[i] = argv[0][i];
buffer[i] = '\0';
break_optimization(buffer);
// check that we can read from a buffer
for (i = 0; argv[0][i] && i < sizeof (buffer) - 1; ++i)
if (buffer[i] != argv[0][i])
return 1;
return 0;
}