diff options
-rw-r--r-- | src/lib/libcrypto/asn1/a_gentm.c | 9 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/a_utctm.c | 9 | ||||
-rw-r--r-- | src/lib/libcrypto/bio/b_sock.c | 12 | ||||
-rw-r--r-- | src/lib/libcrypto/bio/bio_cb.c | 36 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_print.c | 5 | ||||
-rw-r--r-- | src/lib/libcrypto/engine/eng_ctrl.c | 10 | ||||
-rw-r--r-- | src/lib/libcrypto/x509/by_dir.c | 4 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/asn1/a_gentm.c | 9 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/asn1/a_utctm.c | 9 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/bio/b_sock.c | 12 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/bio/bio_cb.c | 36 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/bn/bn_print.c | 5 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/engine/eng_ctrl.c | 10 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509/by_dir.c | 4 |
14 files changed, 98 insertions, 72 deletions
diff --git a/src/lib/libcrypto/asn1/a_gentm.c b/src/lib/libcrypto/asn1/a_gentm.c index cd09f68b38..48b923de1f 100644 --- a/src/lib/libcrypto/asn1/a_gentm.c +++ b/src/lib/libcrypto/asn1/a_gentm.c | |||
@@ -208,6 +208,7 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, | |||
208 | char *p; | 208 | char *p; |
209 | struct tm *ts; | 209 | struct tm *ts; |
210 | struct tm data; | 210 | struct tm data; |
211 | size_t len = 20; | ||
211 | 212 | ||
212 | if (s == NULL) | 213 | if (s == NULL) |
213 | s=M_ASN1_GENERALIZEDTIME_new(); | 214 | s=M_ASN1_GENERALIZEDTIME_new(); |
@@ -219,17 +220,17 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, | |||
219 | return(NULL); | 220 | return(NULL); |
220 | 221 | ||
221 | p=(char *)s->data; | 222 | p=(char *)s->data; |
222 | if ((p == NULL) || (s->length < 16)) | 223 | if ((p == NULL) || (s->length < len)) |
223 | { | 224 | { |
224 | p=OPENSSL_malloc(20); | 225 | p=OPENSSL_malloc(len); |
225 | if (p == NULL) return(NULL); | 226 | if (p == NULL) return(NULL); |
226 | if (s->data != NULL) | 227 | if (s->data != NULL) |
227 | OPENSSL_free(s->data); | 228 | OPENSSL_free(s->data); |
228 | s->data=(unsigned char *)p; | 229 | s->data=(unsigned char *)p; |
229 | } | 230 | } |
230 | 231 | ||
231 | sprintf(p,"%04d%02d%02d%02d%02d%02dZ",ts->tm_year + 1900, | 232 | snprintf(p,len,"%04d%02d%02d%02d%02d%02dZ",ts->tm_year + 1900, |
232 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); | 233 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); |
233 | s->length=strlen(p); | 234 | s->length=strlen(p); |
234 | s->type=V_ASN1_GENERALIZEDTIME; | 235 | s->type=V_ASN1_GENERALIZEDTIME; |
235 | #ifdef CHARSET_EBCDIC_not | 236 | #ifdef CHARSET_EBCDIC_not |
diff --git a/src/lib/libcrypto/asn1/a_utctm.c b/src/lib/libcrypto/asn1/a_utctm.c index dbb4a42c9d..41f6d421bb 100644 --- a/src/lib/libcrypto/asn1/a_utctm.c +++ b/src/lib/libcrypto/asn1/a_utctm.c | |||
@@ -188,6 +188,7 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t) | |||
188 | char *p; | 188 | char *p; |
189 | struct tm *ts; | 189 | struct tm *ts; |
190 | struct tm data; | 190 | struct tm data; |
191 | size_t len = 20; | ||
191 | 192 | ||
192 | if (s == NULL) | 193 | if (s == NULL) |
193 | s=M_ASN1_UTCTIME_new(); | 194 | s=M_ASN1_UTCTIME_new(); |
@@ -199,17 +200,17 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t) | |||
199 | return(NULL); | 200 | return(NULL); |
200 | 201 | ||
201 | p=(char *)s->data; | 202 | p=(char *)s->data; |
202 | if ((p == NULL) || (s->length < 14)) | 203 | if ((p == NULL) || (s->length < len)) |
203 | { | 204 | { |
204 | p=OPENSSL_malloc(20); | 205 | p=OPENSSL_malloc(len); |
205 | if (p == NULL) return(NULL); | 206 | if (p == NULL) return(NULL); |
206 | if (s->data != NULL) | 207 | if (s->data != NULL) |
207 | OPENSSL_free(s->data); | 208 | OPENSSL_free(s->data); |
208 | s->data=(unsigned char *)p; | 209 | s->data=(unsigned char *)p; |
209 | } | 210 | } |
210 | 211 | ||
211 | sprintf(p,"%02d%02d%02d%02d%02d%02dZ",ts->tm_year%100, | 212 | snprintf(p,len,"%02d%02d%02d%02d%02d%02dZ",ts->tm_year%100, |
212 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); | 213 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); |
213 | s->length=strlen(p); | 214 | s->length=strlen(p); |
214 | s->type=V_ASN1_UTCTIME; | 215 | s->type=V_ASN1_UTCTIME; |
215 | #ifdef CHARSET_EBCDIC_not | 216 | #ifdef CHARSET_EBCDIC_not |
diff --git a/src/lib/libcrypto/bio/b_sock.c b/src/lib/libcrypto/bio/b_sock.c index 45bd7c47e8..7632c2d85e 100644 --- a/src/lib/libcrypto/bio/b_sock.c +++ b/src/lib/libcrypto/bio/b_sock.c | |||
@@ -697,12 +697,12 @@ int BIO_accept(int sock, char **addr) | |||
697 | } | 697 | } |
698 | *addr=p; | 698 | *addr=p; |
699 | } | 699 | } |
700 | sprintf(*addr,"%d.%d.%d.%d:%d", | 700 | snprintf(*addr,24,"%d.%d.%d.%d:%d", |
701 | (unsigned char)(l>>24L)&0xff, | 701 | (unsigned char)(l>>24L)&0xff, |
702 | (unsigned char)(l>>16L)&0xff, | 702 | (unsigned char)(l>>16L)&0xff, |
703 | (unsigned char)(l>> 8L)&0xff, | 703 | (unsigned char)(l>> 8L)&0xff, |
704 | (unsigned char)(l )&0xff, | 704 | (unsigned char)(l )&0xff, |
705 | port); | 705 | port); |
706 | end: | 706 | end: |
707 | return(ret); | 707 | return(ret); |
708 | } | 708 | } |
diff --git a/src/lib/libcrypto/bio/bio_cb.c b/src/lib/libcrypto/bio/bio_cb.c index 0ffa4d2136..ee9159ebd8 100644 --- a/src/lib/libcrypto/bio/bio_cb.c +++ b/src/lib/libcrypto/bio/bio_cb.c | |||
@@ -70,55 +70,61 @@ long MS_CALLBACK BIO_debug_callback(BIO *bio, int cmd, const char *argp, | |||
70 | MS_STATIC char buf[256]; | 70 | MS_STATIC char buf[256]; |
71 | char *p; | 71 | char *p; |
72 | long r=1; | 72 | long r=1; |
73 | size_t p_maxlen; | ||
73 | 74 | ||
74 | if (BIO_CB_RETURN & cmd) | 75 | if (BIO_CB_RETURN & cmd) |
75 | r=ret; | 76 | r=ret; |
76 | 77 | ||
77 | sprintf(buf,"BIO[%08lX]:",(unsigned long)bio); | 78 | snprintf(buf,sizeof buf,"BIO[%08lX]:",(unsigned long)bio); |
78 | p= &(buf[14]); | 79 | p= &(buf[14]); |
80 | p_maxlen = sizeof buf - 14; | ||
79 | switch (cmd) | 81 | switch (cmd) |
80 | { | 82 | { |
81 | case BIO_CB_FREE: | 83 | case BIO_CB_FREE: |
82 | sprintf(p,"Free - %s\n",bio->method->name); | 84 | snprintf(p,p_maxlen,"Free - %s\n",bio->method->name); |
83 | break; | 85 | break; |
84 | case BIO_CB_READ: | 86 | case BIO_CB_READ: |
85 | if (bio->method->type & BIO_TYPE_DESCRIPTOR) | 87 | if (bio->method->type & BIO_TYPE_DESCRIPTOR) |
86 | sprintf(p,"read(%d,%d) - %s fd=%d\n",bio->num,argi,bio->method->name,bio->num); | 88 | snprintf(p,p_maxlen,"read(%d,%d) - %s fd=%d\n", |
89 | bio->num,argi,bio->method->name,bio->num); | ||
87 | else | 90 | else |
88 | sprintf(p,"read(%d,%d) - %s\n",bio->num,argi,bio->method->name); | 91 | snprintf(p,p_maxlen,"read(%d,%d) - %s\n", |
92 | bio->num,argi,bio->method->name); | ||
89 | break; | 93 | break; |
90 | case BIO_CB_WRITE: | 94 | case BIO_CB_WRITE: |
91 | if (bio->method->type & BIO_TYPE_DESCRIPTOR) | 95 | if (bio->method->type & BIO_TYPE_DESCRIPTOR) |
92 | sprintf(p,"write(%d,%d) - %s fd=%d\n",bio->num,argi,bio->method->name,bio->num); | 96 | snprintf(p,p_maxlen,"write(%d,%d) - %s fd=%d\n", |
97 | bio->num,argi,bio->method->name,bio->num); | ||
93 | else | 98 | else |
94 | sprintf(p,"write(%d,%d) - %s\n",bio->num,argi,bio->method->name); | 99 | snprintf(p,p_maxlen,"write(%d,%d) - %s\n", |
100 | bio->num,argi,bio->method->name); | ||
95 | break; | 101 | break; |
96 | case BIO_CB_PUTS: | 102 | case BIO_CB_PUTS: |
97 | sprintf(p,"puts() - %s\n",bio->method->name); | 103 | snprintf(p,p_maxlen,"puts() - %s\n",bio->method->name); |
98 | break; | 104 | break; |
99 | case BIO_CB_GETS: | 105 | case BIO_CB_GETS: |
100 | sprintf(p,"gets(%d) - %s\n",argi,bio->method->name); | 106 | snprintf(p,p_maxlen,"gets(%d) - %s\n",argi,bio->method->name); |
101 | break; | 107 | break; |
102 | case BIO_CB_CTRL: | 108 | case BIO_CB_CTRL: |
103 | sprintf(p,"ctrl(%d) - %s\n",argi,bio->method->name); | 109 | snprintf(p,p_maxlen,"ctrl(%d) - %s\n",argi,bio->method->name); |
104 | break; | 110 | break; |
105 | case BIO_CB_RETURN|BIO_CB_READ: | 111 | case BIO_CB_RETURN|BIO_CB_READ: |
106 | sprintf(p,"read return %ld\n",ret); | 112 | snprintf(p,p_maxlen,"read return %ld\n",ret); |
107 | break; | 113 | break; |
108 | case BIO_CB_RETURN|BIO_CB_WRITE: | 114 | case BIO_CB_RETURN|BIO_CB_WRITE: |
109 | sprintf(p,"write return %ld\n",ret); | 115 | snprintf(p,p_maxlen,"write return %ld\n",ret); |
110 | break; | 116 | break; |
111 | case BIO_CB_RETURN|BIO_CB_GETS: | 117 | case BIO_CB_RETURN|BIO_CB_GETS: |
112 | sprintf(p,"gets return %ld\n",ret); | 118 | snprintf(p,p_maxlen,"gets return %ld\n",ret); |
113 | break; | 119 | break; |
114 | case BIO_CB_RETURN|BIO_CB_PUTS: | 120 | case BIO_CB_RETURN|BIO_CB_PUTS: |
115 | sprintf(p,"puts return %ld\n",ret); | 121 | snprintf(p,p_maxlen,"puts return %ld\n",ret); |
116 | break; | 122 | break; |
117 | case BIO_CB_RETURN|BIO_CB_CTRL: | 123 | case BIO_CB_RETURN|BIO_CB_CTRL: |
118 | sprintf(p,"ctrl return %ld\n",ret); | 124 | snprintf(p,p_maxlen,"ctrl return %ld\n",ret); |
119 | break; | 125 | break; |
120 | default: | 126 | default: |
121 | sprintf(p,"bio callback - unknown type (%d)\n",cmd); | 127 | snprintf(p,p_maxlen,"bio callback - unknown type (%d)\n",cmd); |
122 | break; | 128 | break; |
123 | } | 129 | } |
124 | 130 | ||
diff --git a/src/lib/libcrypto/bn/bn_print.c b/src/lib/libcrypto/bn/bn_print.c index 5f46b1826c..e3b6aa235b 100644 --- a/src/lib/libcrypto/bn/bn_print.c +++ b/src/lib/libcrypto/bn/bn_print.c | |||
@@ -119,6 +119,7 @@ char *BN_bn2dec(const BIGNUM *a) | |||
119 | } | 119 | } |
120 | if ((t=BN_dup(a)) == NULL) goto err; | 120 | if ((t=BN_dup(a)) == NULL) goto err; |
121 | 121 | ||
122 | #define BUF_REMAIN (num+3 - (size_t)(p - buf)) | ||
122 | p=buf; | 123 | p=buf; |
123 | lp=bn_data; | 124 | lp=bn_data; |
124 | if (t->neg) *(p++)='-'; | 125 | if (t->neg) *(p++)='-'; |
@@ -139,12 +140,12 @@ char *BN_bn2dec(const BIGNUM *a) | |||
139 | /* We now have a series of blocks, BN_DEC_NUM chars | 140 | /* We now have a series of blocks, BN_DEC_NUM chars |
140 | * in length, where the last one needs truncation. | 141 | * in length, where the last one needs truncation. |
141 | * The blocks need to be reversed in order. */ | 142 | * The blocks need to be reversed in order. */ |
142 | sprintf(p,BN_DEC_FMT1,*lp); | 143 | snprintf(p,BUF_REMAIN,BN_DEC_FMT1,*lp); |
143 | while (*p) p++; | 144 | while (*p) p++; |
144 | while (lp != bn_data) | 145 | while (lp != bn_data) |
145 | { | 146 | { |
146 | lp--; | 147 | lp--; |
147 | sprintf(p,BN_DEC_FMT2,*lp); | 148 | snprintf(p,BUF_REMAIN,BN_DEC_FMT2,*lp); |
148 | while (*p) p++; | 149 | while (*p) p++; |
149 | } | 150 | } |
150 | } | 151 | } |
diff --git a/src/lib/libcrypto/engine/eng_ctrl.c b/src/lib/libcrypto/engine/eng_ctrl.c index ad3858395b..0d56e69d27 100644 --- a/src/lib/libcrypto/engine/eng_ctrl.c +++ b/src/lib/libcrypto/engine/eng_ctrl.c | |||
@@ -160,15 +160,19 @@ static int int_ctrl_helper(ENGINE *e, int cmd, long i, void *p, void (*f)()) | |||
160 | case ENGINE_CTRL_GET_NAME_LEN_FROM_CMD: | 160 | case ENGINE_CTRL_GET_NAME_LEN_FROM_CMD: |
161 | return strlen(e->cmd_defns[idx].cmd_name); | 161 | return strlen(e->cmd_defns[idx].cmd_name); |
162 | case ENGINE_CTRL_GET_NAME_FROM_CMD: | 162 | case ENGINE_CTRL_GET_NAME_FROM_CMD: |
163 | return sprintf(s, "%s", e->cmd_defns[idx].cmd_name); | 163 | return snprintf(s,strlen(e->cmd_defns[idx].cmd_name) + 1, |
164 | "%s", e->cmd_defns[idx].cmd_name); | ||
164 | case ENGINE_CTRL_GET_DESC_LEN_FROM_CMD: | 165 | case ENGINE_CTRL_GET_DESC_LEN_FROM_CMD: |
165 | if(e->cmd_defns[idx].cmd_desc) | 166 | if(e->cmd_defns[idx].cmd_desc) |
166 | return strlen(e->cmd_defns[idx].cmd_desc); | 167 | return strlen(e->cmd_defns[idx].cmd_desc); |
167 | return strlen(int_no_description); | 168 | return strlen(int_no_description); |
168 | case ENGINE_CTRL_GET_DESC_FROM_CMD: | 169 | case ENGINE_CTRL_GET_DESC_FROM_CMD: |
169 | if(e->cmd_defns[idx].cmd_desc) | 170 | if(e->cmd_defns[idx].cmd_desc) |
170 | return sprintf(s, "%s", e->cmd_defns[idx].cmd_desc); | 171 | return snprintf(s, |
171 | return sprintf(s, "%s", int_no_description); | 172 | strlen(e->cmd_defns[idx].cmd_desc) + 1, |
173 | "%s", e->cmd_defns[idx].cmd_desc); | ||
174 | return snprintf(s, strlen(int_no_description) + 1,"%s", | ||
175 | int_no_description); | ||
172 | case ENGINE_CTRL_GET_CMD_FLAGS: | 176 | case ENGINE_CTRL_GET_CMD_FLAGS: |
173 | return e->cmd_defns[idx].cmd_flags; | 177 | return e->cmd_defns[idx].cmd_flags; |
174 | } | 178 | } |
diff --git a/src/lib/libcrypto/x509/by_dir.c b/src/lib/libcrypto/x509/by_dir.c index 448bd7e69c..a5c306f1fd 100644 --- a/src/lib/libcrypto/x509/by_dir.c +++ b/src/lib/libcrypto/x509/by_dir.c | |||
@@ -302,8 +302,8 @@ static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name, | |||
302 | k=0; | 302 | k=0; |
303 | for (;;) | 303 | for (;;) |
304 | { | 304 | { |
305 | sprintf(b->data,"%s/%08lx.%s%d",ctx->dirs[i],h, | 305 | snprintf(b->data,b->max,"%s/%08lx.%s%d",ctx->dirs[i],h, |
306 | postfix,k); | 306 | postfix,k); |
307 | k++; | 307 | k++; |
308 | if (stat(b->data,&st) < 0) | 308 | if (stat(b->data,&st) < 0) |
309 | break; | 309 | break; |
diff --git a/src/lib/libssl/src/crypto/asn1/a_gentm.c b/src/lib/libssl/src/crypto/asn1/a_gentm.c index cd09f68b38..48b923de1f 100644 --- a/src/lib/libssl/src/crypto/asn1/a_gentm.c +++ b/src/lib/libssl/src/crypto/asn1/a_gentm.c | |||
@@ -208,6 +208,7 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, | |||
208 | char *p; | 208 | char *p; |
209 | struct tm *ts; | 209 | struct tm *ts; |
210 | struct tm data; | 210 | struct tm data; |
211 | size_t len = 20; | ||
211 | 212 | ||
212 | if (s == NULL) | 213 | if (s == NULL) |
213 | s=M_ASN1_GENERALIZEDTIME_new(); | 214 | s=M_ASN1_GENERALIZEDTIME_new(); |
@@ -219,17 +220,17 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, | |||
219 | return(NULL); | 220 | return(NULL); |
220 | 221 | ||
221 | p=(char *)s->data; | 222 | p=(char *)s->data; |
222 | if ((p == NULL) || (s->length < 16)) | 223 | if ((p == NULL) || (s->length < len)) |
223 | { | 224 | { |
224 | p=OPENSSL_malloc(20); | 225 | p=OPENSSL_malloc(len); |
225 | if (p == NULL) return(NULL); | 226 | if (p == NULL) return(NULL); |
226 | if (s->data != NULL) | 227 | if (s->data != NULL) |
227 | OPENSSL_free(s->data); | 228 | OPENSSL_free(s->data); |
228 | s->data=(unsigned char *)p; | 229 | s->data=(unsigned char *)p; |
229 | } | 230 | } |
230 | 231 | ||
231 | sprintf(p,"%04d%02d%02d%02d%02d%02dZ",ts->tm_year + 1900, | 232 | snprintf(p,len,"%04d%02d%02d%02d%02d%02dZ",ts->tm_year + 1900, |
232 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); | 233 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); |
233 | s->length=strlen(p); | 234 | s->length=strlen(p); |
234 | s->type=V_ASN1_GENERALIZEDTIME; | 235 | s->type=V_ASN1_GENERALIZEDTIME; |
235 | #ifdef CHARSET_EBCDIC_not | 236 | #ifdef CHARSET_EBCDIC_not |
diff --git a/src/lib/libssl/src/crypto/asn1/a_utctm.c b/src/lib/libssl/src/crypto/asn1/a_utctm.c index dbb4a42c9d..41f6d421bb 100644 --- a/src/lib/libssl/src/crypto/asn1/a_utctm.c +++ b/src/lib/libssl/src/crypto/asn1/a_utctm.c | |||
@@ -188,6 +188,7 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t) | |||
188 | char *p; | 188 | char *p; |
189 | struct tm *ts; | 189 | struct tm *ts; |
190 | struct tm data; | 190 | struct tm data; |
191 | size_t len = 20; | ||
191 | 192 | ||
192 | if (s == NULL) | 193 | if (s == NULL) |
193 | s=M_ASN1_UTCTIME_new(); | 194 | s=M_ASN1_UTCTIME_new(); |
@@ -199,17 +200,17 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t) | |||
199 | return(NULL); | 200 | return(NULL); |
200 | 201 | ||
201 | p=(char *)s->data; | 202 | p=(char *)s->data; |
202 | if ((p == NULL) || (s->length < 14)) | 203 | if ((p == NULL) || (s->length < len)) |
203 | { | 204 | { |
204 | p=OPENSSL_malloc(20); | 205 | p=OPENSSL_malloc(len); |
205 | if (p == NULL) return(NULL); | 206 | if (p == NULL) return(NULL); |
206 | if (s->data != NULL) | 207 | if (s->data != NULL) |
207 | OPENSSL_free(s->data); | 208 | OPENSSL_free(s->data); |
208 | s->data=(unsigned char *)p; | 209 | s->data=(unsigned char *)p; |
209 | } | 210 | } |
210 | 211 | ||
211 | sprintf(p,"%02d%02d%02d%02d%02d%02dZ",ts->tm_year%100, | 212 | snprintf(p,len,"%02d%02d%02d%02d%02d%02dZ",ts->tm_year%100, |
212 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); | 213 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); |
213 | s->length=strlen(p); | 214 | s->length=strlen(p); |
214 | s->type=V_ASN1_UTCTIME; | 215 | s->type=V_ASN1_UTCTIME; |
215 | #ifdef CHARSET_EBCDIC_not | 216 | #ifdef CHARSET_EBCDIC_not |
diff --git a/src/lib/libssl/src/crypto/bio/b_sock.c b/src/lib/libssl/src/crypto/bio/b_sock.c index 45bd7c47e8..7632c2d85e 100644 --- a/src/lib/libssl/src/crypto/bio/b_sock.c +++ b/src/lib/libssl/src/crypto/bio/b_sock.c | |||
@@ -697,12 +697,12 @@ int BIO_accept(int sock, char **addr) | |||
697 | } | 697 | } |
698 | *addr=p; | 698 | *addr=p; |
699 | } | 699 | } |
700 | sprintf(*addr,"%d.%d.%d.%d:%d", | 700 | snprintf(*addr,24,"%d.%d.%d.%d:%d", |
701 | (unsigned char)(l>>24L)&0xff, | 701 | (unsigned char)(l>>24L)&0xff, |
702 | (unsigned char)(l>>16L)&0xff, | 702 | (unsigned char)(l>>16L)&0xff, |
703 | (unsigned char)(l>> 8L)&0xff, | 703 | (unsigned char)(l>> 8L)&0xff, |
704 | (unsigned char)(l )&0xff, | 704 | (unsigned char)(l )&0xff, |
705 | port); | 705 | port); |
706 | end: | 706 | end: |
707 | return(ret); | 707 | return(ret); |
708 | } | 708 | } |
diff --git a/src/lib/libssl/src/crypto/bio/bio_cb.c b/src/lib/libssl/src/crypto/bio/bio_cb.c index 0ffa4d2136..ee9159ebd8 100644 --- a/src/lib/libssl/src/crypto/bio/bio_cb.c +++ b/src/lib/libssl/src/crypto/bio/bio_cb.c | |||
@@ -70,55 +70,61 @@ long MS_CALLBACK BIO_debug_callback(BIO *bio, int cmd, const char *argp, | |||
70 | MS_STATIC char buf[256]; | 70 | MS_STATIC char buf[256]; |
71 | char *p; | 71 | char *p; |
72 | long r=1; | 72 | long r=1; |
73 | size_t p_maxlen; | ||
73 | 74 | ||
74 | if (BIO_CB_RETURN & cmd) | 75 | if (BIO_CB_RETURN & cmd) |
75 | r=ret; | 76 | r=ret; |
76 | 77 | ||
77 | sprintf(buf,"BIO[%08lX]:",(unsigned long)bio); | 78 | snprintf(buf,sizeof buf,"BIO[%08lX]:",(unsigned long)bio); |
78 | p= &(buf[14]); | 79 | p= &(buf[14]); |
80 | p_maxlen = sizeof buf - 14; | ||
79 | switch (cmd) | 81 | switch (cmd) |
80 | { | 82 | { |
81 | case BIO_CB_FREE: | 83 | case BIO_CB_FREE: |
82 | sprintf(p,"Free - %s\n",bio->method->name); | 84 | snprintf(p,p_maxlen,"Free - %s\n",bio->method->name); |
83 | break; | 85 | break; |
84 | case BIO_CB_READ: | 86 | case BIO_CB_READ: |
85 | if (bio->method->type & BIO_TYPE_DESCRIPTOR) | 87 | if (bio->method->type & BIO_TYPE_DESCRIPTOR) |
86 | sprintf(p,"read(%d,%d) - %s fd=%d\n",bio->num,argi,bio->method->name,bio->num); | 88 | snprintf(p,p_maxlen,"read(%d,%d) - %s fd=%d\n", |
89 | bio->num,argi,bio->method->name,bio->num); | ||
87 | else | 90 | else |
88 | sprintf(p,"read(%d,%d) - %s\n",bio->num,argi,bio->method->name); | 91 | snprintf(p,p_maxlen,"read(%d,%d) - %s\n", |
92 | bio->num,argi,bio->method->name); | ||
89 | break; | 93 | break; |
90 | case BIO_CB_WRITE: | 94 | case BIO_CB_WRITE: |
91 | if (bio->method->type & BIO_TYPE_DESCRIPTOR) | 95 | if (bio->method->type & BIO_TYPE_DESCRIPTOR) |
92 | sprintf(p,"write(%d,%d) - %s fd=%d\n",bio->num,argi,bio->method->name,bio->num); | 96 | snprintf(p,p_maxlen,"write(%d,%d) - %s fd=%d\n", |
97 | bio->num,argi,bio->method->name,bio->num); | ||
93 | else | 98 | else |
94 | sprintf(p,"write(%d,%d) - %s\n",bio->num,argi,bio->method->name); | 99 | snprintf(p,p_maxlen,"write(%d,%d) - %s\n", |
100 | bio->num,argi,bio->method->name); | ||
95 | break; | 101 | break; |
96 | case BIO_CB_PUTS: | 102 | case BIO_CB_PUTS: |
97 | sprintf(p,"puts() - %s\n",bio->method->name); | 103 | snprintf(p,p_maxlen,"puts() - %s\n",bio->method->name); |
98 | break; | 104 | break; |
99 | case BIO_CB_GETS: | 105 | case BIO_CB_GETS: |
100 | sprintf(p,"gets(%d) - %s\n",argi,bio->method->name); | 106 | snprintf(p,p_maxlen,"gets(%d) - %s\n",argi,bio->method->name); |
101 | break; | 107 | break; |
102 | case BIO_CB_CTRL: | 108 | case BIO_CB_CTRL: |
103 | sprintf(p,"ctrl(%d) - %s\n",argi,bio->method->name); | 109 | snprintf(p,p_maxlen,"ctrl(%d) - %s\n",argi,bio->method->name); |
104 | break; | 110 | break; |
105 | case BIO_CB_RETURN|BIO_CB_READ: | 111 | case BIO_CB_RETURN|BIO_CB_READ: |
106 | sprintf(p,"read return %ld\n",ret); | 112 | snprintf(p,p_maxlen,"read return %ld\n",ret); |
107 | break; | 113 | break; |
108 | case BIO_CB_RETURN|BIO_CB_WRITE: | 114 | case BIO_CB_RETURN|BIO_CB_WRITE: |
109 | sprintf(p,"write return %ld\n",ret); | 115 | snprintf(p,p_maxlen,"write return %ld\n",ret); |
110 | break; | 116 | break; |
111 | case BIO_CB_RETURN|BIO_CB_GETS: | 117 | case BIO_CB_RETURN|BIO_CB_GETS: |
112 | sprintf(p,"gets return %ld\n",ret); | 118 | snprintf(p,p_maxlen,"gets return %ld\n",ret); |
113 | break; | 119 | break; |
114 | case BIO_CB_RETURN|BIO_CB_PUTS: | 120 | case BIO_CB_RETURN|BIO_CB_PUTS: |
115 | sprintf(p,"puts return %ld\n",ret); | 121 | snprintf(p,p_maxlen,"puts return %ld\n",ret); |
116 | break; | 122 | break; |
117 | case BIO_CB_RETURN|BIO_CB_CTRL: | 123 | case BIO_CB_RETURN|BIO_CB_CTRL: |
118 | sprintf(p,"ctrl return %ld\n",ret); | 124 | snprintf(p,p_maxlen,"ctrl return %ld\n",ret); |
119 | break; | 125 | break; |
120 | default: | 126 | default: |
121 | sprintf(p,"bio callback - unknown type (%d)\n",cmd); | 127 | snprintf(p,p_maxlen,"bio callback - unknown type (%d)\n",cmd); |
122 | break; | 128 | break; |
123 | } | 129 | } |
124 | 130 | ||
diff --git a/src/lib/libssl/src/crypto/bn/bn_print.c b/src/lib/libssl/src/crypto/bn/bn_print.c index 5f46b1826c..e3b6aa235b 100644 --- a/src/lib/libssl/src/crypto/bn/bn_print.c +++ b/src/lib/libssl/src/crypto/bn/bn_print.c | |||
@@ -119,6 +119,7 @@ char *BN_bn2dec(const BIGNUM *a) | |||
119 | } | 119 | } |
120 | if ((t=BN_dup(a)) == NULL) goto err; | 120 | if ((t=BN_dup(a)) == NULL) goto err; |
121 | 121 | ||
122 | #define BUF_REMAIN (num+3 - (size_t)(p - buf)) | ||
122 | p=buf; | 123 | p=buf; |
123 | lp=bn_data; | 124 | lp=bn_data; |
124 | if (t->neg) *(p++)='-'; | 125 | if (t->neg) *(p++)='-'; |
@@ -139,12 +140,12 @@ char *BN_bn2dec(const BIGNUM *a) | |||
139 | /* We now have a series of blocks, BN_DEC_NUM chars | 140 | /* We now have a series of blocks, BN_DEC_NUM chars |
140 | * in length, where the last one needs truncation. | 141 | * in length, where the last one needs truncation. |
141 | * The blocks need to be reversed in order. */ | 142 | * The blocks need to be reversed in order. */ |
142 | sprintf(p,BN_DEC_FMT1,*lp); | 143 | snprintf(p,BUF_REMAIN,BN_DEC_FMT1,*lp); |
143 | while (*p) p++; | 144 | while (*p) p++; |
144 | while (lp != bn_data) | 145 | while (lp != bn_data) |
145 | { | 146 | { |
146 | lp--; | 147 | lp--; |
147 | sprintf(p,BN_DEC_FMT2,*lp); | 148 | snprintf(p,BUF_REMAIN,BN_DEC_FMT2,*lp); |
148 | while (*p) p++; | 149 | while (*p) p++; |
149 | } | 150 | } |
150 | } | 151 | } |
diff --git a/src/lib/libssl/src/crypto/engine/eng_ctrl.c b/src/lib/libssl/src/crypto/engine/eng_ctrl.c index ad3858395b..0d56e69d27 100644 --- a/src/lib/libssl/src/crypto/engine/eng_ctrl.c +++ b/src/lib/libssl/src/crypto/engine/eng_ctrl.c | |||
@@ -160,15 +160,19 @@ static int int_ctrl_helper(ENGINE *e, int cmd, long i, void *p, void (*f)()) | |||
160 | case ENGINE_CTRL_GET_NAME_LEN_FROM_CMD: | 160 | case ENGINE_CTRL_GET_NAME_LEN_FROM_CMD: |
161 | return strlen(e->cmd_defns[idx].cmd_name); | 161 | return strlen(e->cmd_defns[idx].cmd_name); |
162 | case ENGINE_CTRL_GET_NAME_FROM_CMD: | 162 | case ENGINE_CTRL_GET_NAME_FROM_CMD: |
163 | return sprintf(s, "%s", e->cmd_defns[idx].cmd_name); | 163 | return snprintf(s,strlen(e->cmd_defns[idx].cmd_name) + 1, |
164 | "%s", e->cmd_defns[idx].cmd_name); | ||
164 | case ENGINE_CTRL_GET_DESC_LEN_FROM_CMD: | 165 | case ENGINE_CTRL_GET_DESC_LEN_FROM_CMD: |
165 | if(e->cmd_defns[idx].cmd_desc) | 166 | if(e->cmd_defns[idx].cmd_desc) |
166 | return strlen(e->cmd_defns[idx].cmd_desc); | 167 | return strlen(e->cmd_defns[idx].cmd_desc); |
167 | return strlen(int_no_description); | 168 | return strlen(int_no_description); |
168 | case ENGINE_CTRL_GET_DESC_FROM_CMD: | 169 | case ENGINE_CTRL_GET_DESC_FROM_CMD: |
169 | if(e->cmd_defns[idx].cmd_desc) | 170 | if(e->cmd_defns[idx].cmd_desc) |
170 | return sprintf(s, "%s", e->cmd_defns[idx].cmd_desc); | 171 | return snprintf(s, |
171 | return sprintf(s, "%s", int_no_description); | 172 | strlen(e->cmd_defns[idx].cmd_desc) + 1, |
173 | "%s", e->cmd_defns[idx].cmd_desc); | ||
174 | return snprintf(s, strlen(int_no_description) + 1,"%s", | ||
175 | int_no_description); | ||
172 | case ENGINE_CTRL_GET_CMD_FLAGS: | 176 | case ENGINE_CTRL_GET_CMD_FLAGS: |
173 | return e->cmd_defns[idx].cmd_flags; | 177 | return e->cmd_defns[idx].cmd_flags; |
174 | } | 178 | } |
diff --git a/src/lib/libssl/src/crypto/x509/by_dir.c b/src/lib/libssl/src/crypto/x509/by_dir.c index 448bd7e69c..a5c306f1fd 100644 --- a/src/lib/libssl/src/crypto/x509/by_dir.c +++ b/src/lib/libssl/src/crypto/x509/by_dir.c | |||
@@ -302,8 +302,8 @@ static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name, | |||
302 | k=0; | 302 | k=0; |
303 | for (;;) | 303 | for (;;) |
304 | { | 304 | { |
305 | sprintf(b->data,"%s/%08lx.%s%d",ctx->dirs[i],h, | 305 | snprintf(b->data,b->max,"%s/%08lx.%s%d",ctx->dirs[i],h, |
306 | postfix,k); | 306 | postfix,k); |
307 | k++; | 307 | k++; |
308 | if (stat(b->data,&st) < 0) | 308 | if (stat(b->data,&st) < 0) |
309 | break; | 309 | break; |