summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/f_enum.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/asn1/f_enum.c')
-rw-r--r--src/lib/libcrypto/asn1/f_enum.c64
1 files changed, 32 insertions, 32 deletions
diff --git a/src/lib/libcrypto/asn1/f_enum.c b/src/lib/libcrypto/asn1/f_enum.c
index caf34ee97e..b6e66ab194 100644
--- a/src/lib/libcrypto/asn1/f_enum.c
+++ b/src/lib/libcrypto/asn1/f_enum.c
@@ -64,7 +64,7 @@
64/* Based on a_int.c: equivalent ENUMERATED functions */ 64/* Based on a_int.c: equivalent ENUMERATED functions */
65 65
66int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a) 66int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a)
67 { 67{
68 int i,n=0; 68 int i,n=0;
69 static const char *h="0123456789ABCDEF"; 69 static const char *h="0123456789ABCDEF";
70 char buf[2]; 70 char buf[2];
@@ -72,32 +72,32 @@ int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a)
72 if (a == NULL) return(0); 72 if (a == NULL) return(0);
73 73
74 if (a->length == 0) 74 if (a->length == 0)
75 { 75 {
76 if (BIO_write(bp,"00",2) != 2) goto err; 76 if (BIO_write(bp,"00",2) != 2) goto err;
77 n=2; 77 n=2;
78 } 78 }
79 else 79 else
80 { 80 {
81 for (i=0; i<a->length; i++) 81 for (i=0; i<a->length; i++)
82 { 82 {
83 if ((i != 0) && (i%35 == 0)) 83 if ((i != 0) && (i%35 == 0))
84 { 84 {
85 if (BIO_write(bp,"\\\n",2) != 2) goto err; 85 if (BIO_write(bp,"\\\n",2) != 2) goto err;
86 n+=2; 86 n+=2;
87 } 87 }
88 buf[0]=h[((unsigned char)a->data[i]>>4)&0x0f]; 88 buf[0]=h[((unsigned char)a->data[i]>>4)&0x0f];
89 buf[1]=h[((unsigned char)a->data[i] )&0x0f]; 89 buf[1]=h[((unsigned char)a->data[i] )&0x0f];
90 if (BIO_write(bp,buf,2) != 2) goto err; 90 if (BIO_write(bp,buf,2) != 2) goto err;
91 n+=2; 91 n+=2;
92 }
93 } 92 }
93 }
94 return(n); 94 return(n);
95err: 95err:
96 return(-1); 96 return(-1);
97 } 97}
98 98
99int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size) 99int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size)
100 { 100{
101 int ret=0; 101 int ret=0;
102 int i,j,k,m,n,again,bufsize; 102 int i,j,k,m,n,again,bufsize;
103 unsigned char *s=NULL,*sp; 103 unsigned char *s=NULL,*sp;
@@ -108,7 +108,7 @@ int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size)
108 108
109 bufsize=BIO_gets(bp,buf,size); 109 bufsize=BIO_gets(bp,buf,size);
110 for (;;) 110 for (;;)
111 { 111 {
112 if (bufsize < 1) goto err_sl; 112 if (bufsize < 1) goto err_sl;
113 i=bufsize; 113 i=bufsize;
114 if (buf[i-1] == '\n') buf[--i]='\0'; 114 if (buf[i-1] == '\n') buf[--i]='\0';
@@ -118,15 +118,15 @@ int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size)
118 again=(buf[i-1] == '\\'); 118 again=(buf[i-1] == '\\');
119 119
120 for (j=0; j<i; j++) 120 for (j=0; j<i; j++)
121 { 121 {
122 if (!( ((buf[j] >= '0') && (buf[j] <= '9')) || 122 if (!( ((buf[j] >= '0') && (buf[j] <= '9')) ||
123 ((buf[j] >= 'a') && (buf[j] <= 'f')) || 123 ((buf[j] >= 'a') && (buf[j] <= 'f')) ||
124 ((buf[j] >= 'A') && (buf[j] <= 'F')))) 124 ((buf[j] >= 'A') && (buf[j] <= 'F'))))
125 { 125 {
126 i=j; 126 i=j;
127 break; 127 break;
128 }
129 } 128 }
129 }
130 buf[i]='\0'; 130 buf[i]='\0';
131 /* We have now cleared all the crap off the end of the 131 /* We have now cleared all the crap off the end of the
132 * line */ 132 * line */
@@ -134,24 +134,24 @@ int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size)
134 134
135 bufp=(unsigned char *)buf; 135 bufp=(unsigned char *)buf;
136 if (first) 136 if (first)
137 { 137 {
138 first=0; 138 first=0;
139 if ((bufp[0] == '0') && (buf[1] == '0')) 139 if ((bufp[0] == '0') && (buf[1] == '0'))
140 { 140 {
141 bufp+=2; 141 bufp+=2;
142 i-=2; 142 i-=2;
143 }
144 } 143 }
144 }
145 k=0; 145 k=0;
146 i-=again; 146 i-=again;
147 if (i%2 != 0) 147 if (i%2 != 0)
148 { 148 {
149 ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ASN1_R_ODD_NUMBER_OF_CHARS); 149 ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ASN1_R_ODD_NUMBER_OF_CHARS);
150 goto err; 150 goto err;
151 } 151 }
152 i/=2; 152 i/=2;
153 if (num+i > slen) 153 if (num+i > slen)
154 { 154 {
155 if (s == NULL) 155 if (s == NULL)
156 sp=(unsigned char *)malloc( 156 sp=(unsigned char *)malloc(
157 (unsigned int)num+i*2); 157 (unsigned int)num+i*2);
@@ -159,18 +159,18 @@ int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size)
159 sp=(unsigned char *)realloc(s, 159 sp=(unsigned char *)realloc(s,
160 (unsigned int)num+i*2); 160 (unsigned int)num+i*2);
161 if (sp == NULL) 161 if (sp == NULL)
162 { 162 {
163 ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ERR_R_MALLOC_FAILURE); 163 ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ERR_R_MALLOC_FAILURE);
164 if (s != NULL) free(s); 164 if (s != NULL) free(s);
165 goto err; 165 goto err;
166 } 166 }
167 s=sp; 167 s=sp;
168 slen=num+i*2; 168 slen=num+i*2;
169 } 169 }
170 for (j=0; j<i; j++,k+=2) 170 for (j=0; j<i; j++,k+=2)
171 { 171 {
172 for (n=0; n<2; n++) 172 for (n=0; n<2; n++)
173 { 173 {
174 m=bufp[k+n]; 174 m=bufp[k+n];
175 if ((m >= '0') && (m <= '9')) 175 if ((m >= '0') && (m <= '9'))
176 m-='0'; 176 m-='0';
@@ -179,29 +179,29 @@ int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size)
179 else if ((m >= 'A') && (m <= 'F')) 179 else if ((m >= 'A') && (m <= 'F'))
180 m=m-'A'+10; 180 m=m-'A'+10;
181 else 181 else
182 { 182 {
183 ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ASN1_R_NON_HEX_CHARACTERS); 183 ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ASN1_R_NON_HEX_CHARACTERS);
184 goto err; 184 goto err;
185 } 185 }
186 s[num+j]<<=4; 186 s[num+j]<<=4;
187 s[num+j]|=m; 187 s[num+j]|=m;
188 }
189 } 188 }
189 }
190 num+=i; 190 num+=i;
191 if (again) 191 if (again)
192 bufsize=BIO_gets(bp,buf,size); 192 bufsize=BIO_gets(bp,buf,size);
193 else 193 else
194 break; 194 break;
195 } 195 }
196 bs->length=num; 196 bs->length=num;
197 bs->data=s; 197 bs->data=s;
198 ret=1; 198 ret=1;
199err: 199err:
200 if (0) 200 if (0)
201 { 201 {
202err_sl: 202err_sl:
203 ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ASN1_R_SHORT_LINE); 203 ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ASN1_R_SHORT_LINE);
204 }
205 return(ret);
206 } 204 }
205 return(ret);
206}
207 207