[compiler-rt] r266006 - [safestack] A test for stackprotector canaries.

Adam Nemet via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 12 08:40:32 PDT 2016


Hi Evgeniy,

Is this yours: http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA_check/11171/testReport/junit/SafeStack/SafeStack/canary_c/ <http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA_check/11171/testReport/junit/SafeStack/SafeStack/canary_c/>

Thanks,
Adam

> On Apr 11, 2016, at 3:28 PM, Evgeniy Stepanov via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> 
> Author: eugenis
> Date: Mon Apr 11 17:28:13 2016
> New Revision: 266006
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=266006&view=rev
> Log:
> [safestack] A test for stackprotector canaries.
> 
> Added:
>    compiler-rt/trunk/test/safestack/canary.c
> 
> Added: compiler-rt/trunk/test/safestack/canary.c
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/safestack/canary.c?rev=266006&view=auto
> ==============================================================================
> --- compiler-rt/trunk/test/safestack/canary.c (added)
> +++ compiler-rt/trunk/test/safestack/canary.c Mon Apr 11 17:28:13 2016
> @@ -0,0 +1,37 @@
> +// RUN: %clang_safestack -g %s -o %t.nossp
> +// RUN: %run %t.nossp 2>&1 | FileCheck --check-prefix=NOSSP %s
> +
> +// RUN: %clang_safestack -fstack-protector-all -g %s -o %t.ssp
> +// RUN: not --crash %run %t.ssp 2>&1 | FileCheck -check-prefix=SSP %s
> +
> +// Test stack canaries on the unsafe stack.
> +
> +// REQUIRES: stable-runtime
> +
> +#include <assert.h>
> +#include <stdio.h>
> +#include <string.h>
> +
> +__attribute__((noinline)) void f(unsigned *y) {
> +  char x;
> +  char *volatile p = &x;
> +  char *volatile q = (char *)y;
> +  assert(p < q);
> +  assert(q - p < 1024); // sanity
> +  // This has technically undefined behavior, but we know the actual layout of
> +  // the unsafe stack and this should not touch anything important.
> +  memset(&x, 0xab, q - p + sizeof(*y));
> +}
> +
> +int main(int argc, char **argv)
> +{
> +  unsigned y;
> +  // NOSSP: main 1
> +  // SSP: main 1
> +  fprintf(stderr, "main 1\n");
> +  f(&y);
> +  // NOSSP: main 2
> +  // SSP-NOT: main 2
> +  fprintf(stderr, "main 2\n");
> +  return 0;
> +}
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160412/b836d23e/attachment.html>


More information about the llvm-commits mailing list