- Merged changes from trunk to PolarSSL 1.1 branch

This commit is contained in:
Paul Bakker 2012-01-23 09:56:51 +00:00
parent d567aa2b6e
commit e2e36d31bd
21 changed files with 58 additions and 36 deletions

View File

@ -1,5 +1,13 @@
PolarSSL ChangeLog PolarSSL ChangeLog
= Version 1.1.1 released on 2012-01-23
Bugfix
* Check for failed malloc() in ssl_set_hostname() and x509_get_entries()
(Closes ticket #47, found by Hugo Leisink)
* Fixed issues with Intel compiler on 64-bit systems (Closes ticket #50)
* Fixed multiple compiler warnings for VS6 and armcc
* Fixed bug in CTR_CRBG selftest
= Version 1.1.0 released on 2011-12-22 = Version 1.1.0 released on 2011-12-22
Features Features
* Added ssl_session_reset() to allow better multi-connection pools of * Added ssl_session_reset() to allow better multi-connection pools of

View File

@ -1,10 +1,10 @@
l/** /**
* @file * @file
* Main page documentation file. * Main page documentation file.
*/ */
/** /**
* @mainpage PolarSSL v1.1.0 source code documentation * @mainpage PolarSSL v1.1.1 source code documentation
* *
* This documentation describes the internal structure of PolarSSL. It was * This documentation describes the internal structure of PolarSSL. It was
* automatically generated from specially formatted comment blocks in * automatically generated from specially formatted comment blocks in

View File

@ -25,7 +25,7 @@ DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded # The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project. # by quotes) that should identify the project.
PROJECT_NAME = "PolarSSL v1.1.0" PROJECT_NAME = "PolarSSL v1.1.1"
# The PROJECT_NUMBER tag can be used to enter a project or revision number. # The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or # This could be handy for archiving the generated documentation or

View File

@ -212,6 +212,7 @@ int asn1_get_bitstring( unsigned char **p, const unsigned char *end,
* \param p The position in the ASN.1 data * \param p The position in the ASN.1 data
* \param end End of data * \param end End of data
* \param cur First variable in the chain to fill * \param cur First variable in the chain to fill
* \param tag Type of sequence
* *
* \return 0 if successful or a specific ASN.1 error code. * \return 0 if successful or a specific ASN.1 error code.
*/ */

View File

@ -30,6 +30,8 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include "config.h"
#define POLARSSL_ERR_MPI_FILE_IO_ERROR -0x0002 /**< An error occurred while reading from or writing to a file. */ #define POLARSSL_ERR_MPI_FILE_IO_ERROR -0x0002 /**< An error occurred while reading from or writing to a file. */
#define POLARSSL_ERR_MPI_BAD_INPUT_DATA -0x0004 /**< Bad input parameters to function. */ #define POLARSSL_ERR_MPI_BAD_INPUT_DATA -0x0004 /**< Bad input parameters to function. */
#define POLARSSL_ERR_MPI_INVALID_CHARACTER -0x0006 /**< There is an invalid character in the digit string. */ #define POLARSSL_ERR_MPI_INVALID_CHARACTER -0x0006 /**< There is an invalid character in the digit string. */
@ -95,12 +97,14 @@ typedef unsigned long t_udbl;
#if defined(_MSC_VER) && defined(_M_IX86) #if defined(_MSC_VER) && defined(_M_IX86)
typedef unsigned __int64 t_udbl; typedef unsigned __int64 t_udbl;
#else #else
#if defined(__amd64__) || defined(__x86_64__) || \ #if defined(__GNUC__) && ( \
defined(__amd64__) || defined(__x86_64__) || \
defined(__ppc64__) || defined(__powerpc64__) || \ defined(__ppc64__) || defined(__powerpc64__) || \
defined(__ia64__) || defined(__alpha__) || \ defined(__ia64__) || defined(__alpha__) || \
(defined(__sparc__) && defined(__arch64__)) || \ (defined(__sparc__) && defined(__arch64__)) || \
defined(__s390x__) defined(__s390x__) )
typedef unsigned int t_udbl __attribute__((mode(TI))); typedef unsigned int t_udbl __attribute__((mode(TI)));
#define POLARSSL_HAVE_LONGLONG
#else #else
#if defined(POLARSSL_HAVE_LONGLONG) #if defined(POLARSSL_HAVE_LONGLONG)
typedef unsigned long long t_udbl; typedef unsigned long long t_udbl;

View File

@ -41,7 +41,7 @@
#ifndef POLARSSL_BN_MUL_H #ifndef POLARSSL_BN_MUL_H
#define POLARSSL_BN_MUL_H #define POLARSSL_BN_MUL_H
#include "config.h" #include "bignum.h"
#if defined(POLARSSL_HAVE_ASM) #if defined(POLARSSL_HAVE_ASM)

View File

@ -72,8 +72,8 @@
* X509 2 21 * X509 2 21
* DHM 3 6 * DHM 3 6
* RSA 4 9 * RSA 4 9
* MD 5 1 * MD 5 4
* CIPER 6 1 * CIPHER 6 5
* SSL 7 30 * SSL 7 30
* *
* Module dependent error code (5 bits 0x.08.-0x.F8.) * Module dependent error code (5 bits 0x.08.-0x.F8.)

View File

@ -42,8 +42,7 @@
#define POLARSSL_ERR_MD_FEATURE_UNAVAILABLE -0x5080 /**< The selected feature is not available. */ #define POLARSSL_ERR_MD_FEATURE_UNAVAILABLE -0x5080 /**< The selected feature is not available. */
#define POLARSSL_ERR_MD_BAD_INPUT_DATA -0x5100 /**< Bad input parameters to function. */ #define POLARSSL_ERR_MD_BAD_INPUT_DATA -0x5100 /**< Bad input parameters to function. */
#define POLARSSL_ERR_MD_ALLOC_FAILED -0x5180 /**< Failed to allocate memory. */ #define POLARSSL_ERR_MD_ALLOC_FAILED -0x5180 /**< Failed to allocate memory. */
#define POLARSSL_ERR_MD_FILE_OPEN_FAILED -0x5200 /**< Opening of file failed. */ #define POLARSSL_ERR_MD_FILE_IO_ERROR -0x5200 /**< Opening or reading of file failed. */
#define POLARSSL_ERR_MD_FILE_READ_FAILED -0x5280 /**< Failure when reading from file. */
typedef enum { typedef enum {
POLARSSL_MD_NONE=0, POLARSSL_MD_NONE=0,

View File

@ -562,7 +562,7 @@ int ssl_set_dh_param_ctx( ssl_context *ssl, dhm_context *dhm_ctx );
* \param ssl SSL context * \param ssl SSL context
* \param hostname the server hostname * \param hostname the server hostname
* *
* \return 0 if successful * \return 0 if successful or POLARSSL_ERR_SSL_MALLOC_FAILED
*/ */
int ssl_set_hostname( ssl_context *ssl, const char *hostname ); int ssl_set_hostname( ssl_context *ssl, const char *hostname );

View File

@ -39,16 +39,16 @@
*/ */
#define POLARSSL_VERSION_MAJOR 1 #define POLARSSL_VERSION_MAJOR 1
#define POLARSSL_VERSION_MINOR 1 #define POLARSSL_VERSION_MINOR 1
#define POLARSSL_VERSION_PATCH 0 #define POLARSSL_VERSION_PATCH 1
/** /**
* The single version number has the following structure: * The single version number has the following structure:
* MMNNPP00 * MMNNPP00
* Major version | Minor version | Patch version * Major version | Minor version | Patch version
*/ */
#define POLARSSL_VERSION_NUMBER 0x01010000 #define POLARSSL_VERSION_NUMBER 0x01010100
#define POLARSSL_VERSION_STRING "1.1.0" #define POLARSSL_VERSION_STRING "1.1.1"
#define POLARSSL_VERSION_STRING_FULL "PolarSSL 1.1.0" #define POLARSSL_VERSION_STRING_FULL "PolarSSL 1.1.1"
#if defined(POLARSSL_VERSION_C) #if defined(POLARSSL_VERSION_C)

View File

@ -47,7 +47,7 @@ add_library(polarssl STATIC ${src})
else(NOT USE_SHARED_POLARSSL_LIBRARY) else(NOT USE_SHARED_POLARSSL_LIBRARY)
add_library(polarssl SHARED ${src}) add_library(polarssl SHARED ${src})
set_target_properties(polarssl PROPERTIES VERSION 1.1.0 SOVERSION 1) set_target_properties(polarssl PROPERTIES VERSION 1.1.1 SOVERSION 1)
endif(NOT USE_SHARED_POLARSSL_LIBRARY) endif(NOT USE_SHARED_POLARSSL_LIBRARY)

View File

@ -94,7 +94,7 @@ const int *cipher_list( void )
return supported_ciphers; return supported_ciphers;
} }
const cipher_info_t *cipher_info_from_type( cipher_type_t cipher_type ) const cipher_info_t *cipher_info_from_type( const cipher_type_t cipher_type )
{ {
/* Find static cipher information */ /* Find static cipher information */
switch ( cipher_type ) switch ( cipher_type )
@ -433,11 +433,10 @@ static void add_pkcs_padding( unsigned char *output, size_t output_len,
output[data_len + i] = (unsigned char) padding_len; output[data_len + i] = (unsigned char) padding_len;
} }
static int get_pkcs_padding( unsigned char *input, unsigned char input_len, static int get_pkcs_padding( unsigned char *input, unsigned int input_len,
size_t *data_len) size_t *data_len)
{ {
int i = 0; unsigned int i, padding_len = 0;
unsigned char padding_len = 0;
if( NULL == input || NULL == data_len ) if( NULL == input || NULL == data_len )
return POLARSSL_ERR_CIPHER_BAD_INPUT_DATA; return POLARSSL_ERR_CIPHER_BAD_INPUT_DATA;

View File

@ -470,7 +470,7 @@ int ctr_drbg_self_test( int verbose )
printf( " CTR_DRBG (PR = TRUE) : " ); printf( " CTR_DRBG (PR = TRUE) : " );
test_offset = 0; test_offset = 0;
if( ctr_drbg_init( &ctx, ctr_drbg_self_test_entropy, entropy_source_pr, nonce_pers_pr, 16 ) != 0 ) if( ctr_drbg_init_entropy_len( &ctx, ctr_drbg_self_test_entropy, entropy_source_pr, nonce_pers_pr, 16, 32 ) != 0 )
{ {
if( verbose != 0 ) if( verbose != 0 )
printf( "failed\n" ); printf( "failed\n" );
@ -513,7 +513,7 @@ int ctr_drbg_self_test( int verbose )
printf( " CTR_DRBG (PR = FALSE): " ); printf( " CTR_DRBG (PR = FALSE): " );
test_offset = 0; test_offset = 0;
if( ctr_drbg_init( &ctx, ctr_drbg_self_test_entropy, entropy_source_nopr, nonce_pers_nopr, 16 ) != 0 ) if( ctr_drbg_init_entropy_len( &ctx, ctr_drbg_self_test_entropy, entropy_source_nopr, nonce_pers_nopr, 16, 32 ) != 0 )
{ {
if( verbose != 0 ) if( verbose != 0 )
printf( "failed\n" ); printf( "failed\n" );

View File

@ -177,10 +177,8 @@ void error_strerror( int ret, char *buf, size_t buflen )
snprintf( buf, buflen, "MD - Bad input parameters to function" ); snprintf( buf, buflen, "MD - Bad input parameters to function" );
if( use_ret == -(POLARSSL_ERR_MD_ALLOC_FAILED) ) if( use_ret == -(POLARSSL_ERR_MD_ALLOC_FAILED) )
snprintf( buf, buflen, "MD - Failed to allocate memory" ); snprintf( buf, buflen, "MD - Failed to allocate memory" );
if( use_ret == -(POLARSSL_ERR_MD_FILE_OPEN_FAILED) ) if( use_ret == -(POLARSSL_ERR_MD_FILE_IO_ERROR) )
snprintf( buf, buflen, "MD - Opening of file failed" ); snprintf( buf, buflen, "MD - Opening or reading of file failed" );
if( use_ret == -(POLARSSL_ERR_MD_FILE_READ_FAILED) )
snprintf( buf, buflen, "MD - Failure when reading from file" );
#endif /* POLARSSL_MD_C */ #endif /* POLARSSL_MD_C */
#if defined(POLARSSL_PEM_C) #if defined(POLARSSL_PEM_C)

View File

@ -222,19 +222,19 @@ int md( const md_info_t *md_info, const unsigned char *input, size_t ilen,
int md_file( const md_info_t *md_info, const char *path, unsigned char *output ) int md_file( const md_info_t *md_info, const char *path, unsigned char *output )
{ {
#if defined(POLARSSL_FS_IO)
int ret; int ret;
#endif
if( md_info == NULL ) if( md_info == NULL )
return POLARSSL_ERR_MD_BAD_INPUT_DATA; return POLARSSL_ERR_MD_BAD_INPUT_DATA;
#if defined(POLARSSL_FS_IO) #if defined(POLARSSL_FS_IO)
ret = md_info->file_func( path, output ); ret = md_info->file_func( path, output );
if( ret == 2 ) if( ret != 0 )
return POLARSSL_ERR_MD_FILE_OPEN_FAILED; return( POLARSSL_ERR_MD_FILE_IO_ERROR + ret );
if( ret == 3 )
return POLARSSL_ERR_MD_FILE_READ_FAILED;
return ret; return( ret );
#else #else
((void) path); ((void) path);
((void) output); ((void) output);

View File

@ -362,7 +362,8 @@ int rsa_pkcs1_encrypt( rsa_context *ctx,
const unsigned char *input, const unsigned char *input,
unsigned char *output ) unsigned char *output )
{ {
size_t nb_pad, olen, ret; size_t nb_pad, olen;
int ret;
unsigned char *p = output; unsigned char *p = output;
#if defined(POLARSSL_PKCS1_V21) #if defined(POLARSSL_PKCS1_V21)
unsigned int hlen; unsigned int hlen;
@ -592,7 +593,8 @@ int rsa_pkcs1_sign( rsa_context *ctx,
unsigned char *p = sig; unsigned char *p = sig;
#if defined(POLARSSL_PKCS1_V21) #if defined(POLARSSL_PKCS1_V21)
unsigned char salt[POLARSSL_MD_MAX_SIZE]; unsigned char salt[POLARSSL_MD_MAX_SIZE];
unsigned int slen, hlen, offset = 0, ret; unsigned int slen, hlen, offset = 0;
int ret;
size_t msb; size_t msb;
const md_info_t *md_info; const md_info_t *md_info;
md_context_t md_ctx; md_context_t md_ctx;

View File

@ -178,7 +178,9 @@ static int ssl_write_client_hello( ssl_context *ssl )
static int ssl_parse_server_hello( ssl_context *ssl ) static int ssl_parse_server_hello( ssl_context *ssl )
{ {
#if defined(POLARSSL_DEBUG_MSG) && defined(POLARSSL_DEBUG_C)
time_t t; time_t t;
#endif
int ret, i; int ret, i;
size_t n; size_t n;
int ext_len; int ext_len;
@ -226,10 +228,12 @@ static int ssl_parse_server_hello( ssl_context *ssl )
ssl->minor_ver = buf[5]; ssl->minor_ver = buf[5];
#if defined(POLARSSL_DEBUG_MSG) && defined(POLARSSL_DEBUG_C)
t = ( (time_t) buf[6] << 24 ) t = ( (time_t) buf[6] << 24 )
| ( (time_t) buf[7] << 16 ) | ( (time_t) buf[7] << 16 )
| ( (time_t) buf[8] << 8 ) | ( (time_t) buf[8] << 8 )
| ( (time_t) buf[9] ); | ( (time_t) buf[9] );
#endif
memcpy( ssl->randbytes + 32, buf + 6, 32 ); memcpy( ssl->randbytes + 32, buf + 6, 32 );

View File

@ -1913,6 +1913,9 @@ int ssl_set_hostname( ssl_context *ssl, const char *hostname )
ssl->hostname_len = strlen( hostname ); ssl->hostname_len = strlen( hostname );
ssl->hostname = (unsigned char *) malloc( ssl->hostname_len + 1 ); ssl->hostname = (unsigned char *) malloc( ssl->hostname_len + 1 );
if( ssl->hostname == NULL )
return( POLARSSL_ERR_SSL_MALLOC_FAILED );
memcpy( ssl->hostname, (unsigned char *) hostname, memcpy( ssl->hostname, (unsigned char *) hostname,
ssl->hostname_len ); ssl->hostname_len );

View File

@ -968,6 +968,10 @@ static int x509_get_entries( unsigned char **p,
if ( *p < end ) if ( *p < end )
{ {
cur_entry->next = malloc( sizeof( x509_crl_entry ) ); cur_entry->next = malloc( sizeof( x509_crl_entry ) );
if( cur_entry->next == NULL )
return( POLARSSL_ERR_X509_MALLOC_FAILED );
cur_entry = cur_entry->next; cur_entry = cur_entry->next;
memset( cur_entry, 0, sizeof( x509_crl_entry ) ); memset( cur_entry, 0, sizeof( x509_crl_entry ) );
} }

View File

@ -37,7 +37,7 @@
#if !defined(POLARSSL_BIGNUM_C) || !defined(POLARSSL_RSA_C) || \ #if !defined(POLARSSL_BIGNUM_C) || !defined(POLARSSL_RSA_C) || \
!defined(POLARSSL_SHA1_C) || !defined(POLARSSL_FS_IO) !defined(POLARSSL_SHA1_C) || !defined(POLARSSL_FS_IO)
int 5ain( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {
((void) argc); ((void) argc);
((void) argv); ((void) argv);

View File

@ -1,5 +1,5 @@
Check compiletime library version Check compiletime library version
check_compiletime_version:"1.1.0" check_compiletime_version:"1.1.1"
Check runtime library version Check runtime library version
check_runtime_version:"1.1.0" check_runtime_version:"1.1.1"