Cleanup and changing the malloc routines

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



1. I trust that functions to allocate specific data 
? types (such as bignums) are not changed by this.
	They are not.

2. Macros that take zero arguments (such as 
? "OPENSSL_malloc_init()") are not accepted by all 
? compilers.? In my own API designs this has forced 
? me to give such macros a dummy argument (which is 
? never used, it just pleases the preprocessor).
	Luckily, we are limiting to c89, so this isn't an issue.

3. When compiling without compile-time debug flags, 
? the various debug arguments should not be passed 
? (or otherwise referenced) by the macros, avoiding 
? a bunch of "foo.c" and line number values from 
? filling up the compiled binary.? Something like
	This is a good idea.  In fact, I'll make all the memory-debug stuff disabled via the #ifdef.

4. For the basic functions (not the callbacks), there 
? seems to be no reason not to change to size_t now.
	Agreed.  It will happen in 1.1, just not the planned commit.

5. Given the huge number of backward incompatibilities 
? in OpenSSL 1.1.x, this seems a good time to change to 
? size_t in the callbacks too.
	Yup, same reason.

6. Maybe there should be an alternate get/set_mem_functions 
? with non-linenumber callbacks (behind the scenes, either 
? would set the the other callbacks to stubs that add/remove 
? the extra args, the initial defaults would be direct for 
? speed and to support the "defer to default implementation" 
? scenarios).
	If you look, that's what the current (undocumented) code does.  It was really hard to understand.  I think being able to replace malloc/realloc/free at runtime, as opposed to editing the source and building your own version, is the wrong trade-off to make.  But that's the goal of this thread:  to find out if anyone is actually doing that.

7. Maybe the get/set_mem_functions should (in their debug 
? variant) should also be able to change the backend for 
? debug_push/_pop.
	Same as #6.

8. For readability, defines with omitted (opaque) 
? definitions should be documented with elided args such 
? as #define OPENSSL_malloc(num) ... and 
? #define CRYPTO_MEM_CHECK_ON 0x... to indicate that they 
? do not (typically) expand to nothing/typically do expand 
? to a numeric constant
	That seems reasonable; anyone else agree?

9. Typo: "pointers for with the current functions"
	Thanks!

10. It would be helpful to clarify which older functions are 
? getting removed.? It's a bit like reading a patch without 
? the removed lines.? Kind of impossible to tell what you 
? propose to remove.
	Here's the internal git commit message.  Do you need/want more detail?
    Make the "change wrapper functions" be the only paradigm.
    Wrote documentation!
    Format the 'set func' functions so their paramlists are readible
    Format some multi-line comments.
    Remove LEVITTE_DEBUG_MEM
    Remove ability to get/set the "set options" functions at runtime.
    Remove ability to get/set the "memory debug" functions at runtme.
    Remove CRYPTO_pop_all
    Remove MemCheck_* and CRYPTO_malloc_debug_init macros
    Remove memleak_callback stuff.
    Remove {OPENSSL,CRYPTO}_remalloc.
    Remove {OPENSSL,CRYPTO}_strdup; use BUF_strdup.
    Add CRYPTO_mem_debug(int flag) function.
    Add test/memleaktest.
    Rename CRYPTO_dbg_xxx to CRYPTO_mem_debug_xxx
    Rename CRYPTO_{push,pop}_info to CRYPTO_mem_debug_{push,pop}
    Rename CRYPTO_malloc_init to OPENSSL_malloc_init; remove needless calls.
    Rename *_realloc_clear to *_clear_realloc, like *_clear_free
    Only two macros CRYPTO_MDEBUG,CRYPTO_MDEBUG_ABORT to control this.




Enjoy (NOT A CONTRIBUTION)

Jakob
-- 
Jakob Bohm, CIO, Partner, WiseMo A/S.  http://www.wisemo.com
Transformervej 29, 2860 S?borg, Denmark.  Direct +45 31 13 16 10
This public discussion message is non-binding and may contain errors.
WiseMo - Remote Service Management for PCs, Phones and Embedded 


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux