Skip to content

Instantly share code, notes, and snippets.

View aedrax's full-sized avatar

Paul Sorensen aedrax

  • OP[4]
  • United States
View GitHub Profile

Keybase proof

I hereby claim:

  • I am aedrax on github.
  • I am psorensen (https://keybase.io/psorensen) on keybase.
  • I have a public key ASDgntKbH49vdtDyq2ArHGpfCINhYTskyK9J5UNdREgo7Ao

To claim this, I am signing this object:

// gcc -g -fno-stack-protector main.c
#include <stdio.h>
void sneaky() {
puts("you win!\n");
}
void foo() {
char buffer[10];
gets(buffer);
@aedrax
aedrax / defer.h
Last active September 8, 2022 23:06 — forked from baruch/defer.h
Defer cleanup for C (gcc and llvm)
#define DEFER_MERGE(a, b) a##b
#define DEFER_VARNAME(a) DEFER_MERGE(defer_scopevar_, a)
#define DEFER_FUNCNAME(a) DEFER_MERGE(defer_scopefunc_, a)
#define DEFER(BLOCK) \
void DEFER_FUNCNAME(__LINE__)(__attribute__((unused)) int *a) { BLOCK; } \
__attribute__((cleanup(DEFER_FUNCNAME(__LINE__)))) int DEFER_VARNAME(__LINE__)
// Usage:
/*
void dosomething()