diff options
| author | ho <> | 2003-04-06 09:22:53 +0000 |
|---|---|---|
| committer | ho <> | 2003-04-06 09:22:53 +0000 |
| commit | 076c25d273764c843263b4783f51a4972e8c301b (patch) | |
| tree | 53edb40fe170a6d578386f380e5c0c39c150ed78 | |
| parent | d0dbce9d2ce1f0022e91a9d6007272d786be2a60 (diff) | |
| download | openbsd-076c25d273764c843263b4783f51a4972e8c301b.tar.gz openbsd-076c25d273764c843263b4783f51a4972e8c301b.tar.bz2 openbsd-076c25d273764c843263b4783f51a4972e8c301b.zip | |
sprintf->snprintf. deraadt@ suggestions and ok
| -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; |
