summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/a_object.c
diff options
context:
space:
mode:
authorbeck <>2017-01-29 17:49:23 +0000
committerbeck <>2017-01-29 17:49:23 +0000
commit957b11334a7afb14537322f0e4795b2e368b3f59 (patch)
tree1a54abba678898ee5270ae4f3404a50ee9a92eea /src/lib/libcrypto/asn1/a_object.c
parentdf96e020e729c6c37a8c7fe311fdd1fe6a8718c5 (diff)
downloadopenbsd-957b11334a7afb14537322f0e4795b2e368b3f59.tar.gz
openbsd-957b11334a7afb14537322f0e4795b2e368b3f59.tar.bz2
openbsd-957b11334a7afb14537322f0e4795b2e368b3f59.zip
Send the function codes from the error functions to the bit bucket,
as was done earlier in libssl. Thanks inoguchi@ for noticing libssl had more reacharounds into this. ok jsing@ inoguchi@
Diffstat (limited to 'src/lib/libcrypto/asn1/a_object.c')
-rw-r--r--src/lib/libcrypto/asn1/a_object.c29
1 files changed, 12 insertions, 17 deletions
diff --git a/src/lib/libcrypto/asn1/a_object.c b/src/lib/libcrypto/asn1/a_object.c
index 44694d2ba7..711b01f149 100644
--- a/src/lib/libcrypto/asn1/a_object.c
+++ b/src/lib/libcrypto/asn1/a_object.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: a_object.c,v 1.28 2016/11/06 17:04:48 bcook Exp $ */ 1/* $OpenBSD: a_object.c,v 1.29 2017/01/29 17:49:22 beck 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 *
@@ -109,12 +109,12 @@ a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num)
109 if ((c >= '0') && (c <= '2')) { 109 if ((c >= '0') && (c <= '2')) {
110 first= c-'0'; 110 first= c-'0';
111 } else { 111 } else {
112 ASN1err(ASN1_F_A2D_ASN1_OBJECT, ASN1_R_FIRST_NUM_TOO_LARGE); 112 ASN1error(ASN1_R_FIRST_NUM_TOO_LARGE);
113 goto err; 113 goto err;
114 } 114 }
115 115
116 if (num <= 0) { 116 if (num <= 0) {
117 ASN1err(ASN1_F_A2D_ASN1_OBJECT, ASN1_R_MISSING_SECOND_NUMBER); 117 ASN1error(ASN1_R_MISSING_SECOND_NUMBER);
118 goto err; 118 goto err;
119 } 119 }
120 c = *(p++); 120 c = *(p++);
@@ -123,8 +123,7 @@ a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num)
123 if (num <= 0) 123 if (num <= 0)
124 break; 124 break;
125 if ((c != '.') && (c != ' ')) { 125 if ((c != '.') && (c != ' ')) {
126 ASN1err(ASN1_F_A2D_ASN1_OBJECT, 126 ASN1error(ASN1_R_INVALID_SEPARATOR);
127 ASN1_R_INVALID_SEPARATOR);
128 goto err; 127 goto err;
129 } 128 }
130 l = 0; 129 l = 0;
@@ -137,8 +136,7 @@ a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num)
137 if ((c == ' ') || (c == '.')) 136 if ((c == ' ') || (c == '.'))
138 break; 137 break;
139 if ((c < '0') || (c > '9')) { 138 if ((c < '0') || (c > '9')) {
140 ASN1err(ASN1_F_A2D_ASN1_OBJECT, 139 ASN1error(ASN1_R_INVALID_DIGIT);
141 ASN1_R_INVALID_DIGIT);
142 goto err; 140 goto err;
143 } 141 }
144 if (!use_bn && l >= ((ULONG_MAX - 80) / 10L)) { 142 if (!use_bn && l >= ((ULONG_MAX - 80) / 10L)) {
@@ -157,8 +155,7 @@ a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num)
157 } 155 }
158 if (len == 0) { 156 if (len == 0) {
159 if ((first < 2) && (l >= 40)) { 157 if ((first < 2) && (l >= 40)) {
160 ASN1err(ASN1_F_A2D_ASN1_OBJECT, 158 ASN1error(ASN1_R_SECOND_NUMBER_TOO_LARGE);
161 ASN1_R_SECOND_NUMBER_TOO_LARGE);
162 goto err; 159 goto err;
163 } 160 }
164 if (use_bn) { 161 if (use_bn) {
@@ -194,8 +191,7 @@ a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num)
194 } 191 }
195 if (out != NULL) { 192 if (out != NULL) {
196 if (len + i > olen) { 193 if (len + i > olen) {
197 ASN1err(ASN1_F_A2D_ASN1_OBJECT, 194 ASN1error(ASN1_R_BUFFER_TOO_SMALL);
198 ASN1_R_BUFFER_TOO_SMALL);
199 goto err; 195 goto err;
200 } 196 }
201 while (--i > 0) 197 while (--i > 0)
@@ -277,7 +273,7 @@ d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long length)
277 return ret; 273 return ret;
278 274
279err: 275err:
280 ASN1err(ASN1_F_D2I_ASN1_OBJECT, i); 276 ASN1error(i);
281 return (NULL); 277 return (NULL);
282} 278}
283 279
@@ -297,7 +293,7 @@ c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long len)
297 */ 293 */
298 if (len <= 0 || len > INT_MAX || pp == NULL || (p = *pp) == NULL || 294 if (len <= 0 || len > INT_MAX || pp == NULL || (p = *pp) == NULL ||
299 p[len - 1] & 0x80) { 295 p[len - 1] & 0x80) {
300 ASN1err(ASN1_F_C2I_ASN1_OBJECT, ASN1_R_INVALID_OBJECT_ENCODING); 296 ASN1error(ASN1_R_INVALID_OBJECT_ENCODING);
301 return (NULL); 297 return (NULL);
302 } 298 }
303 299
@@ -305,8 +301,7 @@ c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long len)
305 length = (int)len; 301 length = (int)len;
306 for (i = 0; i < length; i++, p++) { 302 for (i = 0; i < length; i++, p++) {
307 if (*p == 0x80 && (!i || !(p[-1] & 0x80))) { 303 if (*p == 0x80 && (!i || !(p[-1] & 0x80))) {
308 ASN1err(ASN1_F_C2I_ASN1_OBJECT, 304 ASN1error(ASN1_R_INVALID_OBJECT_ENCODING);
309 ASN1_R_INVALID_OBJECT_ENCODING);
310 return (NULL); 305 return (NULL);
311 } 306 }
312 } 307 }
@@ -330,7 +325,7 @@ c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long len)
330 325
331 data = malloc(length); 326 data = malloc(length);
332 if (data == NULL) { 327 if (data == NULL) {
333 ASN1err(ASN1_F_C2I_ASN1_OBJECT, ERR_R_MALLOC_FAILURE); 328 ASN1error(ERR_R_MALLOC_FAILURE);
334 goto err; 329 goto err;
335 } 330 }
336 331
@@ -362,7 +357,7 @@ ASN1_OBJECT_new(void)
362 357
363 ret = malloc(sizeof(ASN1_OBJECT)); 358 ret = malloc(sizeof(ASN1_OBJECT));
364 if (ret == NULL) { 359 if (ret == NULL) {
365 ASN1err(ASN1_F_ASN1_OBJECT_NEW, ERR_R_MALLOC_FAILURE); 360 ASN1error(ERR_R_MALLOC_FAILURE);
366 return (NULL); 361 return (NULL);
367 } 362 }
368 ret->length = 0; 363 ret->length = 0;