summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libcrypto/asn1/a_time.c10
-rw-r--r--src/lib/libcrypto/asn1/t_pkey.c4
-rw-r--r--src/lib/libcrypto/bio/bss_file.c10
-rw-r--r--src/lib/libcrypto/err/err.c2
-rw-r--r--src/lib/libcrypto/evp/evp_pbe.c2
-rw-r--r--src/lib/libcrypto/evp/evp_pkey.c2
-rw-r--r--src/lib/libcrypto/mem_dbg.c12
-rw-r--r--src/lib/libcrypto/pem/pem_lib.c14
-rw-r--r--src/lib/libcrypto/rand/randfile.c2
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_time.c10
-rw-r--r--src/lib/libssl/src/crypto/asn1/t_pkey.c4
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_file.c10
-rw-r--r--src/lib/libssl/src/crypto/err/err.c2
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_pbe.c2
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_pkey.c2
-rw-r--r--src/lib/libssl/src/crypto/mem_dbg.c12
-rw-r--r--src/lib/libssl/src/crypto/pem/pem_lib.c14
-rw-r--r--src/lib/libssl/src/crypto/rand/randfile.c2
18 files changed, 64 insertions, 52 deletions
diff --git a/src/lib/libcrypto/asn1/a_time.c b/src/lib/libcrypto/asn1/a_time.c
index 27ddd30899..f8fdfb5975 100644
--- a/src/lib/libcrypto/asn1/a_time.c
+++ b/src/lib/libcrypto/asn1/a_time.c
@@ -125,6 +125,7 @@ ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZE
125 { 125 {
126 ASN1_GENERALIZEDTIME *ret; 126 ASN1_GENERALIZEDTIME *ret;
127 char *str; 127 char *str;
128 int newlen;
128 129
129 if (!ASN1_TIME_check(t)) return NULL; 130 if (!ASN1_TIME_check(t)) return NULL;
130 131
@@ -145,14 +146,15 @@ ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZE
145 } 146 }
146 147
147 /* grow the string */ 148 /* grow the string */
148 if (!ASN1_STRING_set(ret, NULL, t->length + 2)) 149 newlen = t->length + 2;
150 if (!ASN1_STRING_set(ret, NULL, newlen))
149 return NULL; 151 return NULL;
150 str = (char *)ret->data; 152 str = (char *)ret->data;
151 /* Work out the century and prepend */ 153 /* Work out the century and prepend */
152 if (t->data[0] >= '5') strcpy(str, "19"); 154 if (t->data[0] >= '5') strlcpy(str, "19", newlen);
153 else strcpy(str, "20"); 155 else strlcpy(str, "20", newlen);
154 156
155 strcat(str, (char *)t->data); 157 strlcat(str, (char *)t->data, newlen);
156 158
157 return ret; 159 return ret;
158 } 160 }
diff --git a/src/lib/libcrypto/asn1/t_pkey.c b/src/lib/libcrypto/asn1/t_pkey.c
index 2d46914cb1..b3f8364012 100644
--- a/src/lib/libcrypto/asn1/t_pkey.c
+++ b/src/lib/libcrypto/asn1/t_pkey.c
@@ -143,9 +143,9 @@ int RSA_print(BIO *bp, const RSA *x, int off)
143 } 143 }
144 144
145 if (x->d == NULL) 145 if (x->d == NULL)
146 sprintf(str,"Modulus (%d bit):",BN_num_bits(x->n)); 146 snprintf(str,sizeof str,"Modulus (%d bit):",BN_num_bits(x->n));
147 else 147 else
148 strcpy(str,"modulus:"); 148 strlcpy(str,"modulus:",sizeof str);
149 if (!print(bp,str,x->n,m,off)) goto err; 149 if (!print(bp,str,x->n,m,off)) goto err;
150 s=(x->d == NULL)?"Exponent:":"publicExponent:"; 150 s=(x->d == NULL)?"Exponent:":"publicExponent:";
151 if (!print(bp,s,x->e,m,off)) goto err; 151 if (!print(bp,s,x->e,m,off)) goto err;
diff --git a/src/lib/libcrypto/bio/bss_file.c b/src/lib/libcrypto/bio/bss_file.c
index 826b361fa2..18e7bb86e6 100644
--- a/src/lib/libcrypto/bio/bss_file.c
+++ b/src/lib/libcrypto/bio/bss_file.c
@@ -232,15 +232,15 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr)
232 if (num & BIO_FP_APPEND) 232 if (num & BIO_FP_APPEND)
233 { 233 {
234 if (num & BIO_FP_READ) 234 if (num & BIO_FP_READ)
235 strcpy(p,"a+"); 235 strlcpy(p,"a+",sizeof p);
236 else strcpy(p,"a"); 236 else strlcpy(p,"a",sizeof p);
237 } 237 }
238 else if ((num & BIO_FP_READ) && (num & BIO_FP_WRITE)) 238 else if ((num & BIO_FP_READ) && (num & BIO_FP_WRITE))
239 strcpy(p,"r+"); 239 strlcpy(p,"r+",sizeof p);
240 else if (num & BIO_FP_WRITE) 240 else if (num & BIO_FP_WRITE)
241 strcpy(p,"w"); 241 strlcpy(p,"w",sizeof p);
242 else if (num & BIO_FP_READ) 242 else if (num & BIO_FP_READ)
243 strcpy(p,"r"); 243 strlcpy(p,"r",sizeof p);
244 else 244 else
245 { 245 {
246 BIOerr(BIO_F_FILE_CTRL,BIO_R_BAD_FOPEN_MODE); 246 BIOerr(BIO_F_FILE_CTRL,BIO_R_BAD_FOPEN_MODE);
diff --git a/src/lib/libcrypto/err/err.c b/src/lib/libcrypto/err/err.c
index 5abe44e6d5..9b532d1f4c 100644
--- a/src/lib/libcrypto/err/err.c
+++ b/src/lib/libcrypto/err/err.c
@@ -1023,7 +1023,7 @@ void ERR_add_error_data(int num, ...)
1023 else 1023 else
1024 str=p; 1024 str=p;
1025 } 1025 }
1026 strcat(str,a); 1026 strlcat(str,a,s+1);
1027 } 1027 }
1028 } 1028 }
1029 ERR_set_error_data(str,ERR_TXT_MALLOCED|ERR_TXT_STRING); 1029 ERR_set_error_data(str,ERR_TXT_MALLOCED|ERR_TXT_STRING);
diff --git a/src/lib/libcrypto/evp/evp_pbe.c b/src/lib/libcrypto/evp/evp_pbe.c
index bcd4d29f85..4234cd7684 100644
--- a/src/lib/libcrypto/evp/evp_pbe.c
+++ b/src/lib/libcrypto/evp/evp_pbe.c
@@ -87,7 +87,7 @@ int EVP_PBE_CipherInit (ASN1_OBJECT *pbe_obj, const char *pass, int passlen,
87 if (i == -1) { 87 if (i == -1) {
88 char obj_tmp[80]; 88 char obj_tmp[80];
89 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_PBE_ALGORITHM); 89 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_PBE_ALGORITHM);
90 if (!pbe_obj) strcpy (obj_tmp, "NULL"); 90 if (!pbe_obj) strlcpy (obj_tmp, "NULL", sizeof obj_tmp);
91 else i2t_ASN1_OBJECT(obj_tmp, 80, pbe_obj); 91 else i2t_ASN1_OBJECT(obj_tmp, 80, pbe_obj);
92 ERR_add_error_data(2, "TYPE=", obj_tmp); 92 ERR_add_error_data(2, "TYPE=", obj_tmp);
93 return 0; 93 return 0;
diff --git a/src/lib/libcrypto/evp/evp_pkey.c b/src/lib/libcrypto/evp/evp_pkey.c
index 34b5b1d21c..30b6fbb03d 100644
--- a/src/lib/libcrypto/evp/evp_pkey.c
+++ b/src/lib/libcrypto/evp/evp_pkey.c
@@ -210,7 +210,7 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8)
210#endif 210#endif
211 default: 211 default:
212 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM); 212 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM);
213 if (!a->algorithm) strcpy (obj_tmp, "NULL"); 213 if (!a->algorithm) strlcpy (obj_tmp, "NULL", sizeof obj_tmp);
214 else i2t_ASN1_OBJECT(obj_tmp, 80, a->algorithm); 214 else i2t_ASN1_OBJECT(obj_tmp, 80, a->algorithm);
215 ERR_add_error_data(2, "TYPE=", obj_tmp); 215 ERR_add_error_data(2, "TYPE=", obj_tmp);
216 EVP_PKEY_free (pkey); 216 EVP_PKEY_free (pkey);
diff --git a/src/lib/libcrypto/mem_dbg.c b/src/lib/libcrypto/mem_dbg.c
index 0beb3b36d1..ea94eee6f4 100644
--- a/src/lib/libcrypto/mem_dbg.c
+++ b/src/lib/libcrypto/mem_dbg.c
@@ -585,6 +585,8 @@ static void print_leak(const MEM *m, MEM_LEAK *l)
585 struct tm *lcl = NULL; 585 struct tm *lcl = NULL;
586 unsigned long ti; 586 unsigned long ti;
587 587
588#define BUF_REMAIN (sizeof buf - (size_t)(bufp - buf))
589
588 if(m->addr == (char *)l->bio) 590 if(m->addr == (char *)l->bio)
589 return; 591 return;
590 592
@@ -592,22 +594,22 @@ static void print_leak(const MEM *m, MEM_LEAK *l)
592 { 594 {
593 lcl = localtime(&m->time); 595 lcl = localtime(&m->time);
594 596
595 sprintf(bufp, "[%02d:%02d:%02d] ", 597 snprintf(bufp, BUF_REMAIN, "[%02d:%02d:%02d] ",
596 lcl->tm_hour,lcl->tm_min,lcl->tm_sec); 598 lcl->tm_hour,lcl->tm_min,lcl->tm_sec);
597 bufp += strlen(bufp); 599 bufp += strlen(bufp);
598 } 600 }
599 601
600 sprintf(bufp, "%5lu file=%s, line=%d, ", 602 snprintf(bufp, BUF_REMAIN, "%5lu file=%s, line=%d, ",
601 m->order,m->file,m->line); 603 m->order,m->file,m->line);
602 bufp += strlen(bufp); 604 bufp += strlen(bufp);
603 605
604 if (options & V_CRYPTO_MDEBUG_THREAD) 606 if (options & V_CRYPTO_MDEBUG_THREAD)
605 { 607 {
606 sprintf(bufp, "thread=%lu, ", m->thread); 608 snprintf(bufp, BUF_REMAIN, "thread=%lu, ", m->thread);
607 bufp += strlen(bufp); 609 bufp += strlen(bufp);
608 } 610 }
609 611
610 sprintf(bufp, "number=%d, address=%08lX\n", 612 snprintf(bufp, BUF_REMAIN, "number=%d, address=%08lX\n",
611 m->num,(unsigned long)m->addr); 613 m->num,(unsigned long)m->addr);
612 bufp += strlen(bufp); 614 bufp += strlen(bufp);
613 615
@@ -682,7 +684,7 @@ void CRYPTO_mem_leaks(BIO *b)
682 (char *)&ml); 684 (char *)&ml);
683 if (ml.chunks != 0) 685 if (ml.chunks != 0)
684 { 686 {
685 sprintf(buf,"%ld bytes leaked in %d chunks\n", 687 snprintf(buf,sizeof buf,"%ld bytes leaked in %d chunks\n",
686 ml.bytes,ml.chunks); 688 ml.bytes,ml.chunks);
687 BIO_puts(b,buf); 689 BIO_puts(b,buf);
688 } 690 }
diff --git a/src/lib/libcrypto/pem/pem_lib.c b/src/lib/libcrypto/pem/pem_lib.c
index a8db6ffbf5..50f5733654 100644
--- a/src/lib/libcrypto/pem/pem_lib.c
+++ b/src/lib/libcrypto/pem/pem_lib.c
@@ -131,9 +131,9 @@ void PEM_proc_type(char *buf, int type)
131 else 131 else
132 str="BAD-TYPE"; 132 str="BAD-TYPE";
133 133
134 strcat(buf,"Proc-Type: 4,"); 134 strlcat(buf,"Proc-Type: 4,",PEM_BUFSIZE);
135 strcat(buf,str); 135 strlcat(buf,str,PEM_BUFSIZE);
136 strcat(buf,"\n"); 136 strlcat(buf,"\n",PEM_BUFSIZE);
137 } 137 }
138 138
139void PEM_dek_info(char *buf, const char *type, int len, char *str) 139void PEM_dek_info(char *buf, const char *type, int len, char *str)
@@ -142,10 +142,12 @@ void PEM_dek_info(char *buf, const char *type, int len, char *str)
142 long i; 142 long i;
143 int j; 143 int j;
144 144
145 strcat(buf,"DEK-Info: "); 145 strlcat(buf,"DEK-Info: ",PEM_BUFSIZE);
146 strcat(buf,type); 146 strlcat(buf,type,PEM_BUFSIZE);
147 strcat(buf,","); 147 strlcat(buf,",",PEM_BUFSIZE);
148 j=strlen(buf); 148 j=strlen(buf);
149 if (j + (len * 2) + 1 > PEM_BUFSIZE)
150 return;
149 for (i=0; i<len; i++) 151 for (i=0; i<len; i++)
150 { 152 {
151 buf[j+i*2] =map[(str[i]>>4)&0x0f]; 153 buf[j+i*2] =map[(str[i]>>4)&0x0f];
diff --git a/src/lib/libcrypto/rand/randfile.c b/src/lib/libcrypto/rand/randfile.c
index 215c2616eb..311dd27a7b 100644
--- a/src/lib/libcrypto/rand/randfile.c
+++ b/src/lib/libcrypto/rand/randfile.c
@@ -242,7 +242,7 @@ const char *RAND_file_name(char *buf, size_t size)
242 { 242 {
243 strlcpy(buf,s,size); 243 strlcpy(buf,s,size);
244#ifndef OPENSSL_SYS_VMS 244#ifndef OPENSSL_SYS_VMS
245 strcat(buf,"/"); 245 strlcat(buf,"/",size);
246#endif 246#endif
247 strlcat(buf,RFILE,size); 247 strlcat(buf,RFILE,size);
248 ok = 1; 248 ok = 1;
diff --git a/src/lib/libssl/src/crypto/asn1/a_time.c b/src/lib/libssl/src/crypto/asn1/a_time.c
index 27ddd30899..f8fdfb5975 100644
--- a/src/lib/libssl/src/crypto/asn1/a_time.c
+++ b/src/lib/libssl/src/crypto/asn1/a_time.c
@@ -125,6 +125,7 @@ ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZE
125 { 125 {
126 ASN1_GENERALIZEDTIME *ret; 126 ASN1_GENERALIZEDTIME *ret;
127 char *str; 127 char *str;
128 int newlen;
128 129
129 if (!ASN1_TIME_check(t)) return NULL; 130 if (!ASN1_TIME_check(t)) return NULL;
130 131
@@ -145,14 +146,15 @@ ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZE
145 } 146 }
146 147
147 /* grow the string */ 148 /* grow the string */
148 if (!ASN1_STRING_set(ret, NULL, t->length + 2)) 149 newlen = t->length + 2;
150 if (!ASN1_STRING_set(ret, NULL, newlen))
149 return NULL; 151 return NULL;
150 str = (char *)ret->data; 152 str = (char *)ret->data;
151 /* Work out the century and prepend */ 153 /* Work out the century and prepend */
152 if (t->data[0] >= '5') strcpy(str, "19"); 154 if (t->data[0] >= '5') strlcpy(str, "19", newlen);
153 else strcpy(str, "20"); 155 else strlcpy(str, "20", newlen);
154 156
155 strcat(str, (char *)t->data); 157 strlcat(str, (char *)t->data, newlen);
156 158
157 return ret; 159 return ret;
158 } 160 }
diff --git a/src/lib/libssl/src/crypto/asn1/t_pkey.c b/src/lib/libssl/src/crypto/asn1/t_pkey.c
index 2d46914cb1..b3f8364012 100644
--- a/src/lib/libssl/src/crypto/asn1/t_pkey.c
+++ b/src/lib/libssl/src/crypto/asn1/t_pkey.c
@@ -143,9 +143,9 @@ int RSA_print(BIO *bp, const RSA *x, int off)
143 } 143 }
144 144
145 if (x->d == NULL) 145 if (x->d == NULL)
146 sprintf(str,"Modulus (%d bit):",BN_num_bits(x->n)); 146 snprintf(str,sizeof str,"Modulus (%d bit):",BN_num_bits(x->n));
147 else 147 else
148 strcpy(str,"modulus:"); 148 strlcpy(str,"modulus:",sizeof str);
149 if (!print(bp,str,x->n,m,off)) goto err; 149 if (!print(bp,str,x->n,m,off)) goto err;
150 s=(x->d == NULL)?"Exponent:":"publicExponent:"; 150 s=(x->d == NULL)?"Exponent:":"publicExponent:";
151 if (!print(bp,s,x->e,m,off)) goto err; 151 if (!print(bp,s,x->e,m,off)) goto err;
diff --git a/src/lib/libssl/src/crypto/bio/bss_file.c b/src/lib/libssl/src/crypto/bio/bss_file.c
index 826b361fa2..18e7bb86e6 100644
--- a/src/lib/libssl/src/crypto/bio/bss_file.c
+++ b/src/lib/libssl/src/crypto/bio/bss_file.c
@@ -232,15 +232,15 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr)
232 if (num & BIO_FP_APPEND) 232 if (num & BIO_FP_APPEND)
233 { 233 {
234 if (num & BIO_FP_READ) 234 if (num & BIO_FP_READ)
235 strcpy(p,"a+"); 235 strlcpy(p,"a+",sizeof p);
236 else strcpy(p,"a"); 236 else strlcpy(p,"a",sizeof p);
237 } 237 }
238 else if ((num & BIO_FP_READ) && (num & BIO_FP_WRITE)) 238 else if ((num & BIO_FP_READ) && (num & BIO_FP_WRITE))
239 strcpy(p,"r+"); 239 strlcpy(p,"r+",sizeof p);
240 else if (num & BIO_FP_WRITE) 240 else if (num & BIO_FP_WRITE)
241 strcpy(p,"w"); 241 strlcpy(p,"w",sizeof p);
242 else if (num & BIO_FP_READ) 242 else if (num & BIO_FP_READ)
243 strcpy(p,"r"); 243 strlcpy(p,"r",sizeof p);
244 else 244 else
245 { 245 {
246 BIOerr(BIO_F_FILE_CTRL,BIO_R_BAD_FOPEN_MODE); 246 BIOerr(BIO_F_FILE_CTRL,BIO_R_BAD_FOPEN_MODE);
diff --git a/src/lib/libssl/src/crypto/err/err.c b/src/lib/libssl/src/crypto/err/err.c
index 5abe44e6d5..9b532d1f4c 100644
--- a/src/lib/libssl/src/crypto/err/err.c
+++ b/src/lib/libssl/src/crypto/err/err.c
@@ -1023,7 +1023,7 @@ void ERR_add_error_data(int num, ...)
1023 else 1023 else
1024 str=p; 1024 str=p;
1025 } 1025 }
1026 strcat(str,a); 1026 strlcat(str,a,s+1);
1027 } 1027 }
1028 } 1028 }
1029 ERR_set_error_data(str,ERR_TXT_MALLOCED|ERR_TXT_STRING); 1029 ERR_set_error_data(str,ERR_TXT_MALLOCED|ERR_TXT_STRING);
diff --git a/src/lib/libssl/src/crypto/evp/evp_pbe.c b/src/lib/libssl/src/crypto/evp/evp_pbe.c
index bcd4d29f85..4234cd7684 100644
--- a/src/lib/libssl/src/crypto/evp/evp_pbe.c
+++ b/src/lib/libssl/src/crypto/evp/evp_pbe.c
@@ -87,7 +87,7 @@ int EVP_PBE_CipherInit (ASN1_OBJECT *pbe_obj, const char *pass, int passlen,
87 if (i == -1) { 87 if (i == -1) {
88 char obj_tmp[80]; 88 char obj_tmp[80];
89 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_PBE_ALGORITHM); 89 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_PBE_ALGORITHM);
90 if (!pbe_obj) strcpy (obj_tmp, "NULL"); 90 if (!pbe_obj) strlcpy (obj_tmp, "NULL", sizeof obj_tmp);
91 else i2t_ASN1_OBJECT(obj_tmp, 80, pbe_obj); 91 else i2t_ASN1_OBJECT(obj_tmp, 80, pbe_obj);
92 ERR_add_error_data(2, "TYPE=", obj_tmp); 92 ERR_add_error_data(2, "TYPE=", obj_tmp);
93 return 0; 93 return 0;
diff --git a/src/lib/libssl/src/crypto/evp/evp_pkey.c b/src/lib/libssl/src/crypto/evp/evp_pkey.c
index 34b5b1d21c..30b6fbb03d 100644
--- a/src/lib/libssl/src/crypto/evp/evp_pkey.c
+++ b/src/lib/libssl/src/crypto/evp/evp_pkey.c
@@ -210,7 +210,7 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8)
210#endif 210#endif
211 default: 211 default:
212 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM); 212 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM);
213 if (!a->algorithm) strcpy (obj_tmp, "NULL"); 213 if (!a->algorithm) strlcpy (obj_tmp, "NULL", sizeof obj_tmp);
214 else i2t_ASN1_OBJECT(obj_tmp, 80, a->algorithm); 214 else i2t_ASN1_OBJECT(obj_tmp, 80, a->algorithm);
215 ERR_add_error_data(2, "TYPE=", obj_tmp); 215 ERR_add_error_data(2, "TYPE=", obj_tmp);
216 EVP_PKEY_free (pkey); 216 EVP_PKEY_free (pkey);
diff --git a/src/lib/libssl/src/crypto/mem_dbg.c b/src/lib/libssl/src/crypto/mem_dbg.c
index 0beb3b36d1..ea94eee6f4 100644
--- a/src/lib/libssl/src/crypto/mem_dbg.c
+++ b/src/lib/libssl/src/crypto/mem_dbg.c
@@ -585,6 +585,8 @@ static void print_leak(const MEM *m, MEM_LEAK *l)
585 struct tm *lcl = NULL; 585 struct tm *lcl = NULL;
586 unsigned long ti; 586 unsigned long ti;
587 587
588#define BUF_REMAIN (sizeof buf - (size_t)(bufp - buf))
589
588 if(m->addr == (char *)l->bio) 590 if(m->addr == (char *)l->bio)
589 return; 591 return;
590 592
@@ -592,22 +594,22 @@ static void print_leak(const MEM *m, MEM_LEAK *l)
592 { 594 {
593 lcl = localtime(&m->time); 595 lcl = localtime(&m->time);
594 596
595 sprintf(bufp, "[%02d:%02d:%02d] ", 597 snprintf(bufp, BUF_REMAIN, "[%02d:%02d:%02d] ",
596 lcl->tm_hour,lcl->tm_min,lcl->tm_sec); 598 lcl->tm_hour,lcl->tm_min,lcl->tm_sec);
597 bufp += strlen(bufp); 599 bufp += strlen(bufp);
598 } 600 }
599 601
600 sprintf(bufp, "%5lu file=%s, line=%d, ", 602 snprintf(bufp, BUF_REMAIN, "%5lu file=%s, line=%d, ",
601 m->order,m->file,m->line); 603 m->order,m->file,m->line);
602 bufp += strlen(bufp); 604 bufp += strlen(bufp);
603 605
604 if (options & V_CRYPTO_MDEBUG_THREAD) 606 if (options & V_CRYPTO_MDEBUG_THREAD)
605 { 607 {
606 sprintf(bufp, "thread=%lu, ", m->thread); 608 snprintf(bufp, BUF_REMAIN, "thread=%lu, ", m->thread);
607 bufp += strlen(bufp); 609 bufp += strlen(bufp);
608 } 610 }
609 611
610 sprintf(bufp, "number=%d, address=%08lX\n", 612 snprintf(bufp, BUF_REMAIN, "number=%d, address=%08lX\n",
611 m->num,(unsigned long)m->addr); 613 m->num,(unsigned long)m->addr);
612 bufp += strlen(bufp); 614 bufp += strlen(bufp);
613 615
@@ -682,7 +684,7 @@ void CRYPTO_mem_leaks(BIO *b)
682 (char *)&ml); 684 (char *)&ml);
683 if (ml.chunks != 0) 685 if (ml.chunks != 0)
684 { 686 {
685 sprintf(buf,"%ld bytes leaked in %d chunks\n", 687 snprintf(buf,sizeof buf,"%ld bytes leaked in %d chunks\n",
686 ml.bytes,ml.chunks); 688 ml.bytes,ml.chunks);
687 BIO_puts(b,buf); 689 BIO_puts(b,buf);
688 } 690 }
diff --git a/src/lib/libssl/src/crypto/pem/pem_lib.c b/src/lib/libssl/src/crypto/pem/pem_lib.c
index a8db6ffbf5..50f5733654 100644
--- a/src/lib/libssl/src/crypto/pem/pem_lib.c
+++ b/src/lib/libssl/src/crypto/pem/pem_lib.c
@@ -131,9 +131,9 @@ void PEM_proc_type(char *buf, int type)
131 else 131 else
132 str="BAD-TYPE"; 132 str="BAD-TYPE";
133 133
134 strcat(buf,"Proc-Type: 4,"); 134 strlcat(buf,"Proc-Type: 4,",PEM_BUFSIZE);
135 strcat(buf,str); 135 strlcat(buf,str,PEM_BUFSIZE);
136 strcat(buf,"\n"); 136 strlcat(buf,"\n",PEM_BUFSIZE);
137 } 137 }
138 138
139void PEM_dek_info(char *buf, const char *type, int len, char *str) 139void PEM_dek_info(char *buf, const char *type, int len, char *str)
@@ -142,10 +142,12 @@ void PEM_dek_info(char *buf, const char *type, int len, char *str)
142 long i; 142 long i;
143 int j; 143 int j;
144 144
145 strcat(buf,"DEK-Info: "); 145 strlcat(buf,"DEK-Info: ",PEM_BUFSIZE);
146 strcat(buf,type); 146 strlcat(buf,type,PEM_BUFSIZE);
147 strcat(buf,","); 147 strlcat(buf,",",PEM_BUFSIZE);
148 j=strlen(buf); 148 j=strlen(buf);
149 if (j + (len * 2) + 1 > PEM_BUFSIZE)
150 return;
149 for (i=0; i<len; i++) 151 for (i=0; i<len; i++)
150 { 152 {
151 buf[j+i*2] =map[(str[i]>>4)&0x0f]; 153 buf[j+i*2] =map[(str[i]>>4)&0x0f];
diff --git a/src/lib/libssl/src/crypto/rand/randfile.c b/src/lib/libssl/src/crypto/rand/randfile.c
index 215c2616eb..311dd27a7b 100644
--- a/src/lib/libssl/src/crypto/rand/randfile.c
+++ b/src/lib/libssl/src/crypto/rand/randfile.c
@@ -242,7 +242,7 @@ const char *RAND_file_name(char *buf, size_t size)
242 { 242 {
243 strlcpy(buf,s,size); 243 strlcpy(buf,s,size);
244#ifndef OPENSSL_SYS_VMS 244#ifndef OPENSSL_SYS_VMS
245 strcat(buf,"/"); 245 strlcat(buf,"/",size);
246#endif 246#endif
247 strlcat(buf,RFILE,size); 247 strlcat(buf,RFILE,size);
248 ok = 1; 248 ok = 1;