diff options
Diffstat (limited to 'src/lib/libcrypto/objects')
-rw-r--r-- | src/lib/libcrypto/objects/obj_dat.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/lib/libcrypto/objects/obj_dat.c b/src/lib/libcrypto/objects/obj_dat.c index 071febba52..15c298e333 100644 --- a/src/lib/libcrypto/objects/obj_dat.c +++ b/src/lib/libcrypto/objects/obj_dat.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: obj_dat.c,v 1.30 2014/07/11 08:44:49 jsing Exp $ */ | 1 | /* $OpenBSD: obj_dat.c,v 1.31 2014/08/08 04:53:43 guenther Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -495,6 +495,10 @@ OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name) | |||
495 | unsigned long l; | 495 | unsigned long l; |
496 | const unsigned char *p; | 496 | const unsigned char *p; |
497 | 497 | ||
498 | /* Ensure that, at every state, |buf| is NUL-terminated. */ | ||
499 | if (buf_len > 0) | ||
500 | buf[0] = '\0'; | ||
501 | |||
498 | if ((a == NULL) || (a->data == NULL)) | 502 | if ((a == NULL) || (a->data == NULL)) |
499 | goto err; | 503 | goto err; |
500 | 504 | ||
@@ -554,8 +558,9 @@ OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name) | |||
554 | i = (int)(l / 40); | 558 | i = (int)(l / 40); |
555 | l -= (long)(i * 40); | 559 | l -= (long)(i * 40); |
556 | } | 560 | } |
557 | if (buf_len > 0) { | 561 | if (buf_len > 1) { |
558 | *buf++ = i + '0'; | 562 | *buf++ = i + '0'; |
563 | *buf = '\0'; | ||
559 | buf_len--; | 564 | buf_len--; |
560 | } | 565 | } |
561 | ret++; | 566 | ret++; |