Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what is the meaning of 0xdead000000000000?

Tags:

linux-kernel

This value was appeared in the poison.h (linux source\include\linux\poison.h):

/*
 * Architectures might want to move the poison pointer offset
 * into some well-recognized area such as 0xdead000000000000,
 * that is also not mappable by user-space exploits:
 */

I just curious about the special of the value 0xdead000000000000?

like image 605
T-tssxuan Avatar asked Jan 06 '15 15:01

T-tssxuan


People also ask

What is this address 0x0000000000000000000000000000000000000000?

Address 0x0000000000000000000000000000000000000000 27 × This address is commonly used by projects to burn tokens (reducing total supply) or mint tokens (increasing total supply).

What is 0xdead address?

× This address is commonly used by projects to burn tokens (reducing total supply).

Who owns Burn address?

A burn address is not owned by any user and no one can feasibly guess its private key, so any assets owned by a burn address are considered lost forever.

What is null address ETH?

The null address in crypto is specifically generated to allow Proof of Burn. Coin burning happens when a token is intentionally sent to an unusable wallet to remove it from circulation. The address is called a burn address or eater address. It can't be accessed or assigned to anyone.


1 Answers

Pretty sure this is just a variant of deadbeef; i.e. it's just an easily identified signal value (see http://en.wikipedia.org/wiki/Hexspeak for deadbeef)

The idea of pointer poisoning is to ensure that a poisoned list pointer can't be used without causing a crash. Say you unlink a structure from the list it was in. You then want to invalidate the pointer value to make sure it's not used again for traversing the list. If there's a bug somewhere in the code -- a dangling pointer reference -- you want to make sure that any code trying to follow the list through this now-unlinked node crashes immediately (rather than later in some possibly unrelated area of code).

Of course you can poison the pointer simply by putting a null value in it or any other invalid address. Using 0xdead000000000000 as the base value just makes it easier to distinguish an explicitly poisoned value from one that was initialized with zero or got overwritten with zeroes. And it can be used with an offset (LIST_POISON{1,2}) to create multiple distinct poison values that all point into unusable areas of the virtual address space and are identifiable as invalid at a glance.

like image 107
Gil Hamilton Avatar answered Sep 28 '22 17:09

Gil Hamilton