Make sure OPENSSL_cleanse checks for NULL
In master we have the function OPENSSL_clear_free(x,y), which immediately
returns if x == NULL. In <=1.0.2 this function does not exist so we have to
do:
OPENSSL_cleanse(x, y);
OPENSSL_free(x);
However, previously, OPENSSL_cleanse did not check that if x == NULL, so
the real equivalent check would have to be:
if (x != NULL)
    OPENSSL_cleanse(x, y);
OPENSSL_free(x);
It would be easy to get this wrong during cherry-picking to other branches
and therefore, for safety, it is best to just ensure OPENSSL_cleanse also
checks for NULL.
Reviewed-by: Rich Salz <rsalz@openssl.org>
(cherry picked from commit 020d8fc83f)
			
			
This commit is contained in:
		@@ -66,6 +66,10 @@ void OPENSSL_cleanse(void *ptr, size_t len)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    unsigned char *p = ptr;
 | 
					    unsigned char *p = ptr;
 | 
				
			||||||
    size_t loop = len, ctr = cleanse_ctr;
 | 
					    size_t loop = len, ctr = cleanse_ctr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (ptr == NULL)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while (loop--) {
 | 
					    while (loop--) {
 | 
				
			||||||
        *(p++) = (unsigned char)ctr;
 | 
					        *(p++) = (unsigned char)ctr;
 | 
				
			||||||
        ctr += (17 + ((size_t)p & 0xF));
 | 
					        ctr += (17 + ((size_t)p & 0xF));
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user