Fix handling of -offset and -length in asn1parse tool.
authorDr. Stephen Henson <steve@openssl.org>
Sun, 8 Feb 2004 13:30:04 +0000 (13:30 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Sun, 8 Feb 2004 13:30:04 +0000 (13:30 +0000)
If -offset exceeds -length of data available exit with an error.

Don't read past end of total data available when -offset supplied.

If -length exceeds total available truncate it.

apps/asn1pars.c

index 5f8ba5e..88db0d1 100644 (file)
@@ -333,7 +333,15 @@ bad:
                num=tmplen;
                }
 
-       if (length == 0) length=(unsigned int)num;
+       if (offset >= num)
+               {
+               BIO_printf(bio_err, "Error: offset too large\n");
+               goto end;
+               }
+
+       num -= offset;
+
+       if ((length == 0) || (length > num)) length=(unsigned int)num;
        if(derout) {
                if(BIO_write(derout, str + offset, length) != (int)length) {
                        BIO_printf(bio_err, "Error writing output\n");