Warmcat homepage andy@warmcat.com
libwebsockets
{"schema":"libjg2-1", "vpath":"/git/", "avatar":"/git/avatar/", "alang":"", "gen_ut":1756412695, "reponame":"openssl", "desc":"OpenSSL", "owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://warmcat.com/repo/openssl", "f":3, "items": [ {"schema":"libjg2-1", "cid":"6c9d791fe694bc54cf05523ccbe5a722", "commit": {"type":"commit", "time": 1452480076, "time_ofs": 0, "oid_tree": { "oid": "c071069a6a3da8d4627329336b67cc62fd63015a", "alias": []}, "oid":{ "oid": "4e482ae6ff62dd992354cad61dd3d81d55b6e204", "alias": []}, "msg": "Add memory leak return value.", "sig_commit": { "git_time": { "time": 1452480076, "offset": 0 }, "name": "Dr. Stephen Henson", "email": "steve@openssl.org", "md5": "fb4026c8240f7577a612418c24e54343" }, "sig_author": { "git_time": { "time": 1452468307, "offset": 0 }, "name": "Dr. Stephen Henson", "email": "steve@openssl.org", "md5": "fb4026c8240f7577a612418c24e54343" }}, "body": "Add memory leak return value.\n\nMake CRYPTO_mem_leaks() and CRYPTO_mem_leaks_fp() return a status value.\nUpdate documentation. Don't abort() if there are leaks.\n\nReviewed-by: Viktor Dukhovni \u003cviktor@openssl.org\u003e\n" , "diff": "diff --git a/crypto/mem_dbg.c b/crypto/mem_dbg.c\nindex 1e9dd83..6e93c80 100644\n--- a/crypto/mem_dbg.c\n+++ b/crypto/mem_dbg.c\n@@ -643,12 +643,12 @@ static void print_leak_doall_arg(const MEM *m, MEM_LEAK *l)\n \n static IMPLEMENT_LHASH_DOALL_ARG_FN(print_leak, const MEM, MEM_LEAK)\n \n-void CRYPTO_mem_leaks(BIO *b)\n+int CRYPTO_mem_leaks(BIO *b)\n {\n MEM_LEAK ml;\n \n if (mh \u003d\u003d NULL \u0026\u0026 amih \u003d\u003d NULL)\n- return;\n+ return 1;\n \n CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE);\n \n@@ -665,7 +665,6 @@ void CRYPTO_mem_leaks(BIO *b)\n }\n if (ml.chunks !\u003d 0) {\n BIO_printf(b, \u0022%ld bytes leaked in %d chunks\u005cn\u0022, ml.bytes, ml.chunks);\n- abort();\n } else {\n /*\n * Make sure that, if we found no leaks, memory-leak debugging itself\n@@ -697,15 +696,17 @@ void CRYPTO_mem_leaks(BIO *b)\n CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC);\n }\n CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE);\n+ return ml.chunks \u003d\u003d 0 ? 1 : 0;\n }\n \n # ifndef OPENSSL_NO_STDIO\n-void CRYPTO_mem_leaks_fp(FILE *fp)\n+int CRYPTO_mem_leaks_fp(FILE *fp)\n {\n BIO *b;\n+ int ret;\n \n if (mh \u003d\u003d NULL)\n- return;\n+ return 0;\n /*\n * Need to turn off memory checking when allocated BIOs ... especially as\n * we're creating them at a time when we're trying to check we've not\n@@ -715,10 +716,11 @@ void CRYPTO_mem_leaks_fp(FILE *fp)\n b \u003d BIO_new(BIO_s_file());\n CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE);\n if (b \u003d\u003d NULL)\n- return;\n+ return -1;\n BIO_set_fp(b, fp, BIO_NOCLOSE);\n- CRYPTO_mem_leaks(b);\n+ ret \u003d CRYPTO_mem_leaks(b);\n BIO_free(b);\n+ return ret;\n }\n # endif\n \ndiff --git a/doc/crypto/OPENSSL_malloc.pod b/doc/crypto/OPENSSL_malloc.pod\nindex eef8c64..9dfeb39 100644\n--- a/doc/crypto/OPENSSL_malloc.pod\n+++ b/doc/crypto/OPENSSL_malloc.pod\n@@ -132,17 +132,18 @@ OPENSSL_mem_debug_pop() removes identifying state from the stack.\n \n At the end of the program, calling CRYPTO_mem_leaks() or\n CRYPTO_mem_leaks_fp() will report all \u0022leaked\u0022 memory, writing it\n-to the specified BIO B\u003cb\u003e or FILE B\u003cfp\u003e.\n-It will then L\u003cabort(3)\u003e if there were any unfree'd allocations.\n+to the specified BIO B\u003cb\u003e or FILE B\u003cfp\u003e. These functions return 1 if\n+there are no leaks, 0 if there are leaks and -1 if an error occurred.\n \n \u003dhead1 RETURN VALUES\n \n OPENSSL_malloc_init(), OPENSSL_free(), OPENSSL_clear_free()\n-CRYPTO_free(), CRYPTO_clear_free(),\n-CRYPTO_get_mem_functions(), and\n-CRYPTO_mem_leaks()\n+CRYPTO_free(), CRYPTO_clear_free() and CRYPTO_get_mem_functions()\n return no value.\n \n+CRYPTO_mem_leaks() and CRYPTO_mem_leaks_fp() return 1 if there\n+are no leaks, 0 if there are leaks and -1 if an error occurred.\n+\n OPENSSL_malloc(), OPENSSL_zalloc(), OPENSSL_realloc(),\n OPENSSL_clear_realloc(),\n CRYPTO_malloc(), CRYPTO_zalloc(), CRYPTO_realloc(),\ndiff --git a/include/openssl/crypto.h b/include/openssl/crypto.h\nindex 5de0f50..7a45699 100644\n--- a/include/openssl/crypto.h\n+++ b/include/openssl/crypto.h\n@@ -509,9 +509,9 @@ void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, size_t num, int flag,\n void CRYPTO_mem_debug_free(void *addr, int flag);\n \n # ifndef OPENSSL_NO_STDIO\n-void CRYPTO_mem_leaks_fp(FILE *);\n+int CRYPTO_mem_leaks_fp(FILE *);\n # endif\n-void CRYPTO_mem_leaks(struct bio_st *bio);\n+int CRYPTO_mem_leaks(struct bio_st *bio);\n # endif\n \n /* die if we have to */\n","s":{"c":1756412695,"u": 4231}} ],"g": 5476,"chitpc": 0,"ehitpc": 0,"indexed":0 , "ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "0000"}