mirror of
https://github.com/clearml/dropbear
synced 2025-06-26 18:17:32 +00:00
zlib can use m_malloc/m_free too
--HG-- branch : fuzz
This commit is contained in:
parent
50bde9976b
commit
114438e669
17
common-kex.c
17
common-kex.c
@ -391,6 +391,14 @@ int is_compress_recv() {
|
|||||||
&& ses.keys->recv.algo_comp == DROPBEAR_COMP_ZLIB_DELAY);
|
&& ses.keys->recv.algo_comp == DROPBEAR_COMP_ZLIB_DELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void* dropbear_zalloc(void* UNUSED(opaque), uInt items, uInt size) {
|
||||||
|
return m_calloc(items, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void dropbear_zfree(void* UNUSED(opaque), void* ptr) {
|
||||||
|
m_free(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
/* Set up new zlib compression streams, close the old ones. Only
|
/* Set up new zlib compression streams, close the old ones. Only
|
||||||
* called from gen_new_keys() */
|
* called from gen_new_keys() */
|
||||||
static void gen_new_zstream_recv() {
|
static void gen_new_zstream_recv() {
|
||||||
@ -399,11 +407,10 @@ static void gen_new_zstream_recv() {
|
|||||||
if (ses.newkeys->recv.algo_comp == DROPBEAR_COMP_ZLIB
|
if (ses.newkeys->recv.algo_comp == DROPBEAR_COMP_ZLIB
|
||||||
|| ses.newkeys->recv.algo_comp == DROPBEAR_COMP_ZLIB_DELAY) {
|
|| ses.newkeys->recv.algo_comp == DROPBEAR_COMP_ZLIB_DELAY) {
|
||||||
ses.newkeys->recv.zstream = (z_streamp)m_malloc(sizeof(z_stream));
|
ses.newkeys->recv.zstream = (z_streamp)m_malloc(sizeof(z_stream));
|
||||||
ses.newkeys->recv.zstream->zalloc = Z_NULL;
|
ses.newkeys->recv.zstream->zalloc = dropbear_zalloc;
|
||||||
ses.newkeys->recv.zstream->zfree = Z_NULL;
|
ses.newkeys->recv.zstream->zfree = dropbear_zfree;
|
||||||
|
|
||||||
if (inflateInit(ses.newkeys->recv.zstream) != Z_OK) {
|
if (inflateInit(ses.newkeys->recv.zstream) != Z_OK) {
|
||||||
m_free(ses.newkeys->recv.zstream);
|
|
||||||
dropbear_exit("zlib error");
|
dropbear_exit("zlib error");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -424,8 +431,8 @@ static void gen_new_zstream_trans() {
|
|||||||
if (ses.newkeys->trans.algo_comp == DROPBEAR_COMP_ZLIB
|
if (ses.newkeys->trans.algo_comp == DROPBEAR_COMP_ZLIB
|
||||||
|| ses.newkeys->trans.algo_comp == DROPBEAR_COMP_ZLIB_DELAY) {
|
|| ses.newkeys->trans.algo_comp == DROPBEAR_COMP_ZLIB_DELAY) {
|
||||||
ses.newkeys->trans.zstream = (z_streamp)m_malloc(sizeof(z_stream));
|
ses.newkeys->trans.zstream = (z_streamp)m_malloc(sizeof(z_stream));
|
||||||
ses.newkeys->trans.zstream->zalloc = Z_NULL;
|
ses.newkeys->trans.zstream->zalloc = dropbear_zalloc;
|
||||||
ses.newkeys->trans.zstream->zfree = Z_NULL;
|
ses.newkeys->trans.zstream->zfree = dropbear_zfree;
|
||||||
|
|
||||||
if (deflateInit2(ses.newkeys->trans.zstream, Z_DEFAULT_COMPRESSION,
|
if (deflateInit2(ses.newkeys->trans.zstream, Z_DEFAULT_COMPRESSION,
|
||||||
Z_DEFLATED, DROPBEAR_ZLIB_WINDOW_BITS,
|
Z_DEFLATED, DROPBEAR_ZLIB_WINDOW_BITS,
|
||||||
|
@ -77,7 +77,9 @@ void * m_malloc(size_t size) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void * m_calloc(size_t nmemb, size_t size) {
|
void * m_calloc(size_t nmemb, size_t size) {
|
||||||
assert(nmemb <= 1000 && size <= 10000);
|
if (SIZE_T_MAX / nmemb < size) {
|
||||||
|
dropbear_exit("m_calloc failed");
|
||||||
|
}
|
||||||
return m_malloc(nmemb*size);
|
return m_malloc(nmemb*size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
|
||||||
void * m_malloc(size_t size);
|
void * m_malloc(size_t size);
|
||||||
/* m_calloc is limited in size, enough for libtomcrypt */
|
|
||||||
void * m_calloc(size_t nmemb, size_t size);
|
void * m_calloc(size_t nmemb, size_t size);
|
||||||
void * m_strdup(const char * str);
|
void * m_strdup(const char * str);
|
||||||
void * m_realloc(void* ptr, size_t size);
|
void * m_realloc(void* ptr, size_t size);
|
||||||
|
Loading…
Reference in New Issue
Block a user