diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/asn1/a_time.c | 10 | ||||
| -rw-r--r-- | src/lib/libcrypto/asn1/t_pkey.c | 4 | ||||
| -rw-r--r-- | src/lib/libcrypto/bio/bss_file.c | 10 | ||||
| -rw-r--r-- | src/lib/libcrypto/err/err.c | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/evp_pbe.c | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/evp_pkey.c | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/mem_dbg.c | 12 | ||||
| -rw-r--r-- | src/lib/libcrypto/pem/pem_lib.c | 14 | ||||
| -rw-r--r-- | src/lib/libcrypto/rand/randfile.c | 2 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/asn1/a_time.c | 10 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/asn1/t_pkey.c | 4 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/bio/bss_file.c | 10 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/err/err.c | 2 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/evp/evp_pbe.c | 2 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/evp/evp_pkey.c | 2 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/mem_dbg.c | 12 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/pem/pem_lib.c | 14 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/rand/randfile.c | 2 |
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 | ||
| 139 | void PEM_dek_info(char *buf, const char *type, int len, char *str) | 139 | void 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 | ||
| 139 | void PEM_dek_info(char *buf, const char *type, int len, char *str) | 139 | void 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; |
