summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/a_gentm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/asn1/a_gentm.c')
-rw-r--r--src/lib/libcrypto/asn1/a_gentm.c72
1 files changed, 36 insertions, 36 deletions
diff --git a/src/lib/libcrypto/asn1/a_gentm.c b/src/lib/libcrypto/asn1/a_gentm.c
index 86666e7a20..54016dc8e7 100644
--- a/src/lib/libcrypto/asn1/a_gentm.c
+++ b/src/lib/libcrypto/asn1/a_gentm.c
@@ -67,41 +67,41 @@
67#if 0 67#if 0
68 68
69int i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **pp) 69int i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **pp)
70 { 70{
71 return(i2d_ASN1_bytes((ASN1_STRING *)a,pp, 71 return(i2d_ASN1_bytes((ASN1_STRING *)a,pp,
72 V_ASN1_GENERALIZEDTIME,V_ASN1_UNIVERSAL)); 72 V_ASN1_GENERALIZEDTIME,V_ASN1_UNIVERSAL));
73 } 73}
74 74
75 75
76ASN1_GENERALIZEDTIME *d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, 76ASN1_GENERALIZEDTIME *d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a,
77 unsigned char **pp, long length) 77 unsigned char **pp, long length)
78 { 78{
79 ASN1_GENERALIZEDTIME *ret=NULL; 79 ASN1_GENERALIZEDTIME *ret=NULL;
80 80
81 ret=(ASN1_GENERALIZEDTIME *)d2i_ASN1_bytes((ASN1_STRING **)a,pp,length, 81 ret=(ASN1_GENERALIZEDTIME *)d2i_ASN1_bytes((ASN1_STRING **)a,pp,length,
82 V_ASN1_GENERALIZEDTIME,V_ASN1_UNIVERSAL); 82 V_ASN1_GENERALIZEDTIME,V_ASN1_UNIVERSAL);
83 if (ret == NULL) 83 if (ret == NULL)
84 { 84 {
85 ASN1err(ASN1_F_D2I_ASN1_GENERALIZEDTIME,ERR_R_NESTED_ASN1_ERROR); 85 ASN1err(ASN1_F_D2I_ASN1_GENERALIZEDTIME,ERR_R_NESTED_ASN1_ERROR);
86 return(NULL); 86 return(NULL);
87 } 87 }
88 if (!ASN1_GENERALIZEDTIME_check(ret)) 88 if (!ASN1_GENERALIZEDTIME_check(ret))
89 { 89 {
90 ASN1err(ASN1_F_D2I_ASN1_GENERALIZEDTIME,ASN1_R_INVALID_TIME_FORMAT); 90 ASN1err(ASN1_F_D2I_ASN1_GENERALIZEDTIME,ASN1_R_INVALID_TIME_FORMAT);
91 goto err; 91 goto err;
92 } 92 }
93 93
94 return(ret); 94 return(ret);
95err: 95err:
96 if ((ret != NULL) && ((a == NULL) || (*a != ret))) 96 if ((ret != NULL) && ((a == NULL) || (*a != ret)))
97 M_ASN1_GENERALIZEDTIME_free(ret); 97 M_ASN1_GENERALIZEDTIME_free(ret);
98 return(NULL); 98 return(NULL);
99 } 99}
100 100
101#endif 101#endif
102 102
103int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d) 103int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d)
104 { 104{
105 static const int min[9]={ 0, 0, 1, 1, 0, 0, 0, 0, 0}; 105 static const int min[9]={ 0, 0, 1, 1, 0, 0, 0, 0, 0};
106 static const int max[9]={99, 99,12,31,23,59,59,12,59}; 106 static const int max[9]={99, 99,12,31,23,59,59,12,59};
107 char *a; 107 char *a;
@@ -117,10 +117,10 @@ int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d)
117 */ 117 */
118 if (l < 13) goto err; 118 if (l < 13) goto err;
119 for (i=0; i<7; i++) 119 for (i=0; i<7; i++)
120 { 120 {
121 if ((i == 6) && ((a[o] == 'Z') || 121 if ((i == 6) && ((a[o] == 'Z') ||
122 (a[o] == '+') || (a[o] == '-'))) 122 (a[o] == '+') || (a[o] == '-')))
123 { i++; break; } 123 { i++; break; }
124 if ((a[o] < '0') || (a[o] > '9')) goto err; 124 if ((a[o] < '0') || (a[o] > '9')) goto err;
125 n= a[o]-'0'; 125 n= a[o]-'0';
126 if (++o > l) goto err; 126 if (++o > l) goto err;
@@ -130,28 +130,28 @@ int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d)
130 if (++o > l) goto err; 130 if (++o > l) goto err;
131 131
132 if ((n < min[i]) || (n > max[i])) goto err; 132 if ((n < min[i]) || (n > max[i])) goto err;
133 } 133 }
134 /* Optional fractional seconds: decimal point followed by one 134 /* Optional fractional seconds: decimal point followed by one
135 * or more digits. 135 * or more digits.
136 */ 136 */
137 if (a[o] == '.') 137 if (a[o] == '.')
138 { 138 {
139 if (++o > l) goto err; 139 if (++o > l) goto err;
140 i = o; 140 i = o;
141 while ((a[o] >= '0') && (a[o] <= '9') && (o <= l)) 141 while ((a[o] >= '0') && (a[o] <= '9') && (o <= l))
142 o++; 142 o++;
143 /* Must have at least one digit after decimal point */ 143 /* Must have at least one digit after decimal point */
144 if (i == o) goto err; 144 if (i == o) goto err;
145 } 145 }
146 146
147 if (a[o] == 'Z') 147 if (a[o] == 'Z')
148 o++; 148 o++;
149 else if ((a[o] == '+') || (a[o] == '-')) 149 else if ((a[o] == '+') || (a[o] == '-'))
150 { 150 {
151 o++; 151 o++;
152 if (o+4 > l) goto err; 152 if (o+4 > l) goto err;
153 for (i=7; i<9; i++) 153 for (i=7; i<9; i++)
154 { 154 {
155 if ((a[o] < '0') || (a[o] > '9')) goto err; 155 if ((a[o] < '0') || (a[o] > '9')) goto err;
156 n= a[o]-'0'; 156 n= a[o]-'0';
157 o++; 157 o++;
@@ -159,49 +159,49 @@ int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d)
159 n=(n*10)+ a[o]-'0'; 159 n=(n*10)+ a[o]-'0';
160 if ((n < min[i]) || (n > max[i])) goto err; 160 if ((n < min[i]) || (n > max[i])) goto err;
161 o++; 161 o++;
162 }
163 } 162 }
163 }
164 else 164 else
165 { 165 {
166 /* Missing time zone information. */ 166 /* Missing time zone information. */
167 goto err; 167 goto err;
168 } 168 }
169 return(o == l); 169 return(o == l);
170err: 170err:
171 return(0); 171 return(0);
172 } 172}
173 173
174int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str) 174int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str)
175 { 175{
176 ASN1_GENERALIZEDTIME t; 176 ASN1_GENERALIZEDTIME t;
177 177
178 t.type=V_ASN1_GENERALIZEDTIME; 178 t.type=V_ASN1_GENERALIZEDTIME;
179 t.length=strlen(str); 179 t.length=strlen(str);
180 t.data=(unsigned char *)str; 180 t.data=(unsigned char *)str;
181 if (ASN1_GENERALIZEDTIME_check(&t)) 181 if (ASN1_GENERALIZEDTIME_check(&t))
182 { 182 {
183 if (s != NULL) 183 if (s != NULL)
184 { 184 {
185 if (!ASN1_STRING_set((ASN1_STRING *)s, 185 if (!ASN1_STRING_set((ASN1_STRING *)s,
186 (unsigned char *)str,t.length)) 186 (unsigned char *)str,t.length))
187 return 0; 187 return 0;
188 s->type=V_ASN1_GENERALIZEDTIME; 188 s->type=V_ASN1_GENERALIZEDTIME;
189 }
190 return(1);
191 } 189 }
190 return(1);
191 }
192 else 192 else
193 return(0); 193 return(0);
194 } 194}
195 195
196ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, 196ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
197 time_t t) 197 time_t t)
198 { 198{
199 return ASN1_GENERALIZEDTIME_adj(s, t, 0, 0); 199 return ASN1_GENERALIZEDTIME_adj(s, t, 0, 0);
200 } 200}
201 201
202ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, 202ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s,
203 time_t t, int offset_day, long offset_sec) 203 time_t t, int offset_day, long offset_sec)
204 { 204{
205 char *p; 205 char *p;
206 struct tm *ts; 206 struct tm *ts;
207 struct tm data; 207 struct tm data;
@@ -217,29 +217,29 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s,
217 return(NULL); 217 return(NULL);
218 218
219 if (offset_day || offset_sec) 219 if (offset_day || offset_sec)
220 { 220 {
221 if (!OPENSSL_gmtime_adj(ts, offset_day, offset_sec)) 221 if (!OPENSSL_gmtime_adj(ts, offset_day, offset_sec))
222 return NULL; 222 return NULL;
223 } 223 }
224 224
225 p=(char *)s->data; 225 p=(char *)s->data;
226 if ((p == NULL) || ((size_t)s->length < len)) 226 if ((p == NULL) || ((size_t)s->length < len))
227 { 227 {
228 p=malloc(len); 228 p=malloc(len);
229 if (p == NULL) 229 if (p == NULL)
230 { 230 {
231 ASN1err(ASN1_F_ASN1_GENERALIZEDTIME_ADJ, 231 ASN1err(ASN1_F_ASN1_GENERALIZEDTIME_ADJ,
232 ERR_R_MALLOC_FAILURE); 232 ERR_R_MALLOC_FAILURE);
233 return(NULL); 233 return(NULL);
234 } 234 }
235 if (s->data != NULL) 235 if (s->data != NULL)
236 free(s->data); 236 free(s->data);
237 s->data=(unsigned char *)p; 237 s->data=(unsigned char *)p;
238 } 238 }
239 239
240 (void) snprintf(p,len,"%04d%02d%02d%02d%02d%02dZ",ts->tm_year + 1900, 240 (void) snprintf(p,len,"%04d%02d%02d%02d%02d%02dZ",ts->tm_year + 1900,
241 ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); 241 ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec);
242 s->length=strlen(p); 242 s->length=strlen(p);
243 s->type=V_ASN1_GENERALIZEDTIME; 243 s->type=V_ASN1_GENERALIZEDTIME;
244 return(s); 244 return(s);
245 } 245}