From: Daniel Kahn Gillmor Date: Sun, 31 Jan 2016 01:38:08 +0000 (-0500) Subject: RT4129: BUF_new_mem_buf should take const void * X-Git-Tag: OpenSSL_1_1_0-pre3~346 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8ab31975bacb9c907261088937d3aa4102e3af84;p=oweals%2Fopenssl.git RT4129: BUF_new_mem_buf should take const void * Signed-off-by: Rich Salz Reviewed-by: Dr. Stephen Henson --- diff --git a/crypto/bio/bss_mem.c b/crypto/bio/bss_mem.c index 4a0fcdaa8f..4d4554719c 100644 --- a/crypto/bio/bss_mem.c +++ b/crypto/bio/bss_mem.c @@ -108,7 +108,7 @@ BIO_METHOD *BIO_s_secmem(void) return(&secmem_method); } -BIO *BIO_new_mem_buf(void *buf, int len) +BIO *BIO_new_mem_buf(const void *buf, int len) { BIO *ret; BUF_MEM *b; @@ -122,7 +122,8 @@ BIO *BIO_new_mem_buf(void *buf, int len) if ((ret = BIO_new(BIO_s_mem())) == NULL) return NULL; b = (BUF_MEM *)ret->ptr; - b->data = buf; + /* Cast away const and trust in the MEM_RDONLY flag. */ + b->data = (void *)buf; b->length = sz; b->max = sz; ret->flags |= BIO_FLAGS_MEM_RDONLY; diff --git a/doc/crypto/BIO_s_mem.pod b/doc/crypto/BIO_s_mem.pod index 1aa7e6ebf9..b9ce5da6e2 100644 --- a/doc/crypto/BIO_s_mem.pod +++ b/doc/crypto/BIO_s_mem.pod @@ -17,7 +17,7 @@ BIO_get_mem_ptr, BIO_new_mem_buf - memory BIO BIO_set_mem_buf(BIO *b,BUF_MEM *bm,int c) BIO_get_mem_ptr(BIO *b,BUF_MEM **pp) - BIO *BIO_new_mem_buf(void *buf, int len); + BIO *BIO_new_mem_buf(const void *buf, int len); =head1 DESCRIPTION @@ -65,7 +65,7 @@ BIO_get_mem_ptr() places the underlying BUF_MEM structure in B. It is a macro. BIO_new_mem_buf() creates a memory BIO using B bytes of data at B, -if B is -1 then the B is assumed to be null terminated and its +if B is -1 then the B is assumed to be nul terminated and its length is determined by B. The BIO is set to a read only state and as a result cannot be written to. This is useful when some data needs to be made available from a static area of memory in the form of a BIO. The diff --git a/include/openssl/bio.h b/include/openssl/bio.h index 8b00ffdda7..9b398ee51b 100644 --- a/include/openssl/bio.h +++ b/include/openssl/bio.h @@ -655,7 +655,7 @@ long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, BIO_METHOD *BIO_s_mem(void); BIO_METHOD *BIO_s_secmem(void); -BIO *BIO_new_mem_buf(void *buf, int len); +BIO *BIO_new_mem_buf(const void *buf, int len); BIO_METHOD *BIO_s_socket(void); BIO_METHOD *BIO_s_connect(void); BIO_METHOD *BIO_s_accept(void);