The branch master has been updated
       via  a1673e1536729d49cb758b988ac7be368e9b1fdb (commit)
       via  80e8fdbe793c8861411e9f49ea290847fa99f4c7 (commit)
      from  b805b4440dbda5444da2426c98ccd40f93d8cfa5 (commit)


- Log -----------------------------------------------------------------
commit a1673e1536729d49cb758b988ac7be368e9b1fdb
Author: Benjamin Kaduk <[email protected]>
Date:   Tue Mar 8 16:44:57 2016 -0600

    Avoid negative array index in BIO_debug_callback()
    
    BIO_snprintf() can return -1 on truncation (and overflow as of commit
    9cb177301fdab492e4cfef376b28339afe3ef663).  Though neither can
    realistically occur while printing a pointer and short fixed string into
    a buffer of length 256, the analysis to confirm that this the case goes
    somewhat far up the call chain, and not all static analyzers can
    successfully follow the chain of logic.
    
    It's easy enough to clamp the returned length to be nonnegative before
    continuing, which appeases the static analyzer and does not harm the
    subsequent code.
    
    Reviewed-by: Richard Levitte <[email protected]>
    Reviewed-by: Rich Salz <[email protected]>

commit 80e8fdbe793c8861411e9f49ea290847fa99f4c7
Author: Benjamin Kaduk <[email protected]>
Date:   Tue Mar 8 15:53:49 2016 -0600

    CT: check some GeneralizedTime return values
    
    Some of the ASN.1 routines for the GeneralizedTime type can return
    errors; check for these and do not continue past failure, so as
    to appease coverity.
    
    Reviewed-by: Richard Levitte <[email protected]>
    Reviewed-by: Rich Salz <[email protected]>

-----------------------------------------------------------------------

Summary of changes:
 crypto/bio/bio_cb.c | 3 +++
 crypto/ct/ct_prn.c  | 6 ++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/crypto/bio/bio_cb.c b/crypto/bio/bio_cb.c
index 4d3365e..ec484b6 100644
--- a/crypto/bio/bio_cb.c
+++ b/crypto/bio/bio_cb.c
@@ -77,6 +77,9 @@ long BIO_debug_callback(BIO *bio, int cmd, const char *argp,
 
     len = BIO_snprintf(buf,sizeof buf,"BIO[%p]: ",(void *)bio);
 
+    /* Ignore errors and continue printing the other information. */
+    if (len < 0)
+        len = 0;
     p = buf + len;
     p_maxlen = sizeof(buf) - len;
 
diff --git a/crypto/ct/ct_prn.c b/crypto/ct/ct_prn.c
index bb669d5..c2e11b1 100644
--- a/crypto/ct/ct_prn.c
+++ b/crypto/ct/ct_prn.c
@@ -80,6 +80,8 @@ static void timestamp_print(uint64_t timestamp, BIO *out)
     ASN1_GENERALIZEDTIME *gen = ASN1_GENERALIZEDTIME_new();
     char genstr[20];
 
+    if (gen == NULL)
+        return;
     ASN1_GENERALIZEDTIME_adj(gen, (time_t)0,
                              (int)(timestamp / 86400000),
                              (timestamp % 86400000) / 1000);
@@ -89,8 +91,8 @@ static void timestamp_print(uint64_t timestamp, BIO *out)
      */
     BIO_snprintf(genstr, sizeof(genstr), "%.14s.%03dZ",
                  ASN1_STRING_data(gen), (unsigned int)(timestamp % 1000));
-    ASN1_GENERALIZEDTIME_set_string(gen, genstr);
-    ASN1_GENERALIZEDTIME_print(out, gen);
+    if (ASN1_GENERALIZEDTIME_set_string(gen, genstr))
+        ASN1_GENERALIZEDTIME_print(out, gen);
     ASN1_GENERALIZEDTIME_free(gen);
 }
 
_____
openssl-commits mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-commits

Reply via email to