💾 Archived View for thrig.me › software › assembly › slab-of-code › wxfail.c captured on 2024-03-21 at 16:01:23.

View Raw

More Information

⬅️ Previous capture (2023-12-28)

-=-=-=-=-=-=-

#include <sys/mman.h>

#include <err.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef void (*fn)(void);

#define SLABSIZE 4096

int
main(int argc, char *argv[])
{
	int value = 41;

	void *slab = malloc(SLABSIZE);
	if (!slab) err(1, "malloc");

	memset(slab, 0xCC, SLABSIZE);

	if (mprotect(slab, SLABSIZE, PROT_EXEC) != 0) err(1, "mprotect");
	fn call = slab;
	call();

	printf("%d\n", value);
}