The branch master has been updated
       via  1518c55a796b058eff01f3cbf177f4b726c01d7c (commit)
       via  21db0e1afdcf17a189ebe49af3506551b108a2f2 (commit)
       via  16e1eea6a67c85c9d786f3c4448182b1aca101b8 (commit)
       via  18ada952d1dcea8dfc5008df9f317b3eb47c13fa (commit)
       via  b998745a4596c05f673ed8acdcaedcb4c5e208ad (commit)
       via  752837e0664e990b5edf6f0b69e1b4612efadce0 (commit)
       via  4f090f76a412a0f69f85621468bd445ea6a65af6 (commit)
      from  f4b076e6e683d36ebeb496f15c06020e0b9bdccd (commit)


- Log -----------------------------------------------------------------
commit 1518c55a796b058eff01f3cbf177f4b726c01d7c
Author: Bernd Edlinger <[email protected]>
Date:   Mon Apr 2 10:54:52 2018 +0200

    Change the "offset too large" message to more generic wording
    
    Reviewed-by: Rich Salz <[email protected]>
    Reviewed-by: Matthias St. Pierre <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/5826)

commit 21db0e1afdcf17a189ebe49af3506551b108a2f2
Author: Bernd Edlinger <[email protected]>
Date:   Mon Apr 2 10:35:29 2018 +0200

    Remove an unnecessary cast in the param to BUF_MEM_grow
    
    Reviewed-by: Rich Salz <[email protected]>
    Reviewed-by: Matthias St. Pierre <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/5826)

commit 16e1eea6a67c85c9d786f3c4448182b1aca101b8
Author: Bernd Edlinger <[email protected]>
Date:   Mon Apr 2 09:13:49 2018 +0200

    Fix range checks with -offset and -length in asn1parse
    
    Reviewed-by: Rich Salz <[email protected]>
    Reviewed-by: Matthias St. Pierre <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/5826)

commit 18ada952d1dcea8dfc5008df9f317b3eb47c13fa
Author: Bernd Edlinger <[email protected]>
Date:   Sun Apr 1 11:02:39 2018 +0200

    Use strtol instead of atoi in asn1parse
    
    Reviewed-by: Rich Salz <[email protected]>
    Reviewed-by: Matthias St. Pierre <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/5826)

commit b998745a4596c05f673ed8acdcaedcb4c5e208ad
Author: Bernd Edlinger <[email protected]>
Date:   Sun Apr 1 00:46:49 2018 +0200

    Improve diagnostics for invalid arguments in asn1parse -strparse
    
    Reviewed-by: Rich Salz <[email protected]>
    Reviewed-by: Matthias St. Pierre <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/5826)

commit 752837e0664e990b5edf6f0b69e1b4612efadce0
Author: Bernd Edlinger <[email protected]>
Date:   Sat Mar 31 21:09:32 2018 +0200

    Fix a crash in the asn1parse command
    
    Thanks to Sem Voigtländer for reporting this issue.
    
    Reviewed-by: Rich Salz <[email protected]>
    Reviewed-by: Matthias St. Pierre <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/5826)

commit 4f090f76a412a0f69f85621468bd445ea6a65af6
Author: Bernd Edlinger <[email protected]>
Date:   Mon Apr 2 17:20:04 2018 +0200

    Use gnu_printf format attribute to minimise MinGW warnings
    
    Reviewed-by: Rich Salz <[email protected]>
    (Merged from https://github.com/openssl/openssl/pull/5839)

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

Summary of changes:
 apps/asn1pars.c       | 20 ++++++++++----------
 include/openssl/bio.h | 22 ++++++++++++++--------
 2 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/apps/asn1pars.c b/apps/asn1pars.c
index a391e0a..62c70b9 100644
--- a/apps/asn1pars.c
+++ b/apps/asn1pars.c
@@ -39,7 +39,7 @@ const OPTIONS asn1parse_options[] = {
     {"dump", OPT_DUMP, 0, "unknown data in hex form"},
     {"dlimit", OPT_DLIMIT, 'p',
      "dump the first arg bytes of unknown data in hex form"},
-    {"strparse", OPT_STRPARSE, 's',
+    {"strparse", OPT_STRPARSE, 'p',
      "offset; a series of these can be used to 'dig'"},
     {OPT_MORE_STR, 0, 0, "into multiple ASN1 blob wrappings"},
     {"genstr", OPT_GENSTR, 's', "string to generate ASN1 structure from"},
@@ -113,13 +113,13 @@ int asn1parse_main(int argc, char **argv)
             offset = strtol(opt_arg(), NULL, 0);
             break;
         case OPT_LENGTH:
-            length = atoi(opt_arg());
+            length = strtol(opt_arg(), NULL, 0);
             break;
         case OPT_DUMP:
             dump = -1;
             break;
         case OPT_DLIMIT:
-            dump = atoi(opt_arg());
+            dump = strtol(opt_arg(), NULL, 0);
             break;
         case OPT_STRPARSE:
             sk_OPENSSL_STRING_push(osk, opt_arg());
@@ -205,7 +205,7 @@ int asn1parse_main(int argc, char **argv)
 
             num = 0;
             for (;;) {
-                if (!BUF_MEM_grow(buf, (int)num + BUFSIZ))
+                if (!BUF_MEM_grow(buf, num + BUFSIZ))
                     goto end;
                 i = BIO_read(in, &(buf->data[num]), BUFSIZ);
                 if (i <= 0)
@@ -225,9 +225,9 @@ int asn1parse_main(int argc, char **argv)
         for (i = 0; i < sk_OPENSSL_STRING_num(osk); i++) {
             ASN1_TYPE *atmp;
             int typ;
-            j = atoi(sk_OPENSSL_STRING_value(osk, i));
-            if (j == 0) {
-                BIO_printf(bio_err, "'%s' is an invalid number\n",
+            j = strtol(sk_OPENSSL_STRING_value(osk, i), NULL, 0);
+            if (j <= 0 || j >= tmplen) {
+                BIO_printf(bio_err, "'%s' is out of range\n",
                            sk_OPENSSL_STRING_value(osk, i));
                 continue;
             }
@@ -258,14 +258,14 @@ int asn1parse_main(int argc, char **argv)
         num = tmplen;
     }
 
-    if (offset >= num) {
-        BIO_printf(bio_err, "Error: offset too large\n");
+    if (offset < 0 || offset >= num) {
+        BIO_printf(bio_err, "Error: offset out of range\n");
         goto end;
     }
 
     num -= offset;
 
-    if ((length == 0) || ((long)length > num))
+    if (length == 0 || length > (unsigned int)num)
         length = (unsigned int)num;
     if (derout != NULL) {
         if (BIO_write(derout, str + offset, length) != (int)length) {
diff --git a/include/openssl/bio.h b/include/openssl/bio.h
index 364ff16..2888b42 100644
--- a/include/openssl/bio.h
+++ b/include/openssl/bio.h
@@ -735,7 +735,7 @@ void BIO_copy_next_retry(BIO *b);
  * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg);
  */
 
-# define __bio_h__attr__(x)
+# define ossl_bio__attr__(x)
 # if defined(__GNUC__) && defined(__STDC_VERSION__) \
     && !defined(__APPLE__)
     /*
@@ -743,19 +743,25 @@ void BIO_copy_next_retry(BIO *b);
      * we can't use __attribute__ with pre C99 dialects.
      */
 #  if __STDC_VERSION__ >= 199901L
-#   undef __bio_h__attr__
-#   define __bio_h__attr__ __attribute__
+#   undef ossl_bio__attr__
+#   define ossl_bio__attr__ __attribute__
+#   if __GNUC__*10 + __GNUC_MINOR__ >= 44
+#    define ossl_bio__printf__ __gnu_printf__
+#   else
+#    define ossl_bio__printf__ __printf__
+#   endif
 #  endif
 # endif
 int BIO_printf(BIO *bio, const char *format, ...)
-__bio_h__attr__((__format__(__printf__, 2, 3)));
+ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 3)));
 int BIO_vprintf(BIO *bio, const char *format, va_list args)
-__bio_h__attr__((__format__(__printf__, 2, 0)));
+ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 0)));
 int BIO_snprintf(char *buf, size_t n, const char *format, ...)
-__bio_h__attr__((__format__(__printf__, 3, 4)));
+ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 4)));
 int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
-__bio_h__attr__((__format__(__printf__, 3, 0)));
-# undef __bio_h__attr__
+ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0)));
+# undef ossl_bio__attr__
+# undef ossl_bio__printf__
 
 
 BIO_METHOD *BIO_meth_new(int type, const char *name);
_____
openssl-commits mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-commits

Reply via email to