Test and fix x509_oid functions
diff --git a/library/error.c b/library/error.c
index 9980a91..2ca755c 100644
--- a/library/error.c
+++ b/library/error.c
@@ -655,6 +655,8 @@
#if defined(POLARSSL_OID_C)
if( use_ret == -(POLARSSL_ERR_OID_NOT_FOUND) )
snprintf( buf, buflen, "OID - OID is not found" );
+ if( use_ret == -(POLARSSL_ERR_OID_BUF_TOO_SMALL) )
+ snprintf( buf, buflen, "OID - output buffer is too small" );
#endif /* POLARSSL_OID_C */
#if defined(POLARSSL_PADLOCK_C)
diff --git a/library/oid.c b/library/oid.c
index f943c6d..a2b929b 100644
--- a/library/oid.c
+++ b/library/oid.c
@@ -590,16 +590,14 @@
#define snprintf compat_snprintf
#endif
-#define POLARSSL_ERR_DEBUG_BUF_TOO_SMALL -2
-
#define SAFE_SNPRINTF() \
{ \
if( ret == -1 ) \
- return( -1 ); \
+ return POLARSSL_ERR_OID_BUF_TOO_SMALL; \
\
- if ( (unsigned int) ret > n ) { \
+ if ( (unsigned int) ret >= n ) { \
p[n - 1] = '\0'; \
- return POLARSSL_ERR_DEBUG_BUF_TOO_SMALL;\
+ return POLARSSL_ERR_OID_BUF_TOO_SMALL; \
} \
\
n -= (unsigned int) ret; \
@@ -630,7 +628,7 @@
{
/* Prevent overflow in value. */
if ( ( ( value << 7 ) >> 7 ) != value )
- return( POLARSSL_ERR_DEBUG_BUF_TOO_SMALL );
+ return( POLARSSL_ERR_OID_BUF_TOO_SMALL );
value <<= 7;
value += oid->p[i] & 0x7F;