diff options
author | Bernd Edlinger <bernd.edlinger@hotmail.de> | 2018-04-02 09:13:49 +0200 |
---|---|---|
committer | Bernd Edlinger <bernd.edlinger@hotmail.de> | 2018-04-03 16:08:25 +0200 |
commit | faddc62b3e657aeb90f4a47e46aeba633964306a (patch) | |
tree | 18eeb6c4a6a567367b8765ad21ba029a7bd1855b /apps | |
parent | e12e3549b79602cdfa888baa23907a8c1e704bd6 (diff) |
Fix range checks with -offset and -length in asn1parse
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/5826)
(cherry picked from commit 16e1eea6a67c85c9d786f3c4448182b1aca101b8)
Diffstat (limited to 'apps')
-rw-r--r-- | apps/asn1pars.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/apps/asn1pars.c b/apps/asn1pars.c index 34f987d5ce..3b80b77e8e 100644 --- a/apps/asn1pars.c +++ b/apps/asn1pars.c @@ -244,14 +244,14 @@ int asn1parse_main(int argc, char **argv) num = tmplen; } - if (offset >= num) { + if (offset < 0 || offset >= num) { BIO_printf(bio_err, "Error: offset too large\n"); goto end; } num -= offset; - if ((length == 0) || ((long)length > num)) + if (length == 0 || length > (unsigned int)num) length = (unsigned int)num; if (derout) { if (BIO_write(derout, str + offset, length) != (int)length) { |