mirror of
				https://github.com/yuzu-emu/mbedtls.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	Fix memory leak in mbedtls_x509_crl_parse()
The memory leak call was caused by missing calls to mbedtls_pem_free() when a MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT error was encountered.
This commit is contained in:
		
							parent
							
								
									5ad4045981
								
							
						
					
					
						commit
						f4cbe10bce
					
				| 
						 | 
					@ -44,6 +44,9 @@ Bugfix
 | 
				
			||||||
     cause buffer bound checks to be bypassed. Found by Eyal Itkin.
 | 
					     cause buffer bound checks to be bypassed. Found by Eyal Itkin.
 | 
				
			||||||
   * Fixed heap overreads in mbedtls_x509_get_time(). Found by Peng
 | 
					   * Fixed heap overreads in mbedtls_x509_get_time(). Found by Peng
 | 
				
			||||||
     Li/Yueh-Hsun Lin, KNOX Security, Samsung Research America.
 | 
					     Li/Yueh-Hsun Lin, KNOX Security, Samsung Research America.
 | 
				
			||||||
 | 
					   * Fix potential memory leak in mbedtls_x509_crl_parse(). The leak was caused
 | 
				
			||||||
 | 
					     by missing calls to mbedtls_pem_free() in cases when a
 | 
				
			||||||
 | 
					     MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT error was encountered.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
= mbed TLS 2.1.6 branch released 2016-10-17
 | 
					= mbed TLS 2.1.6 branch released 2016-10-17
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -524,16 +524,17 @@ int mbedtls_x509_crl_parse( mbedtls_x509_crl *chain, const unsigned char *buf, s
 | 
				
			||||||
            if( ( ret = mbedtls_x509_crl_parse_der( chain,
 | 
					            if( ( ret = mbedtls_x509_crl_parse_der( chain,
 | 
				
			||||||
                                            pem.buf, pem.buflen ) ) != 0 )
 | 
					                                            pem.buf, pem.buflen ) ) != 0 )
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					                mbedtls_pem_free( &pem );
 | 
				
			||||||
                return( ret );
 | 
					                return( ret );
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					 | 
				
			||||||
            mbedtls_pem_free( &pem );
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else if( is_pem )
 | 
					        else if( is_pem )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            mbedtls_pem_free( &pem );
 | 
					            mbedtls_pem_free( &pem );
 | 
				
			||||||
            return( ret );
 | 
					            return( ret );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        mbedtls_pem_free( &pem );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    /* In the PEM case, buflen is 1 at the end, for the terminated NULL byte.
 | 
					    /* In the PEM case, buflen is 1 at the end, for the terminated NULL byte.
 | 
				
			||||||
     * And a valid CRL cannot be less than 1 byte anyway. */
 | 
					     * And a valid CRL cannot be less than 1 byte anyway. */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue