[Python-Dev] Overwriting objects before deallocating them

Andrew Kuchling akuchlin@mems-exchange.org
Fri, 24 May 2002 10:57:53 -0400


In the cryptography toolkit, the deallocators in the C extensions all
overwrite the object's contents before deallocating it.  Is this dodgy
practice?  Is it likely or possible that some day PyObject_Del will
need to look at the contents of a non-GC-supporting object before
freeing it?  (Encryption or hashing objects are not containers, and
it's highly unlikely they ever will be, so they'll never need to
support GC traversal.)

--amk

Example code:  

static void
ALGdealloc(PyObject *ptr)
{
	int i;
	char *obj=(char *)ptr;
	
	/* Overwrite the contents of the object, just in case... */
	for (i = 0; i < sizeof(ALGobject); i++)
		*(obj + i) = '\0';
	PyObject_DEL(ptr);
}

(Note to self: use memset().)