projects
/
bcm963xx.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
and added files
[bcm963xx.git]
/
userapps
/
opensource
/
openssl
/
crypto
/
pem
/
pem_lib.c
diff --git
a/userapps/opensource/openssl/crypto/pem/pem_lib.c
b/userapps/opensource/openssl/crypto/pem/pem_lib.c
index
70b5446
..
8281506
100755
(executable)
--- a/
userapps/opensource/openssl/crypto/pem/pem_lib.c
+++ b/
userapps/opensource/openssl/crypto/pem/pem_lib.c
@@
-73,7
+73,7
@@
const char *PEM_version="PEM" OPENSSL_VERSION_PTEXT;
#define MIN_LENGTH 4
#define MIN_LENGTH 4
-static int load_iv(
unsigned
char **fromp,unsigned char *to, int num);
+static int load_iv(char **fromp,unsigned char *to, int num);
static int check_pem(const char *nm, const char *name);
int PEM_def_callback(char *buf, int num, int w, void *key)
static int check_pem(const char *nm, const char *name);
int PEM_def_callback(char *buf, int num, int w, void *key)
@@
-131,9
+131,9
@@
void PEM_proc_type(char *buf, int type)
else
str="BAD-TYPE";
else
str="BAD-TYPE";
-
strcat(buf,"Proc-Type: 4,"
);
-
strcat(buf,str
);
-
strcat(buf,"\n"
);
+
BUF_strlcat(buf,"Proc-Type: 4,",PEM_BUFSIZE
);
+
BUF_strlcat(buf,str,PEM_BUFSIZE
);
+
BUF_strlcat(buf,"\n",PEM_BUFSIZE
);
}
void PEM_dek_info(char *buf, const char *type, int len, char *str)
}
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)
long i;
int j;
long i;
int j;
-
strcat(buf,"DEK-Info: "
);
-
strcat(buf,type
);
-
strcat(buf,","
);
+
BUF_strlcat(buf,"DEK-Info: ",PEM_BUFSIZE
);
+
BUF_strlcat(buf,type,PEM_BUFSIZE
);
+
BUF_strlcat(buf,",",PEM_BUFSIZE
);
j=strlen(buf);
j=strlen(buf);
+ if (j + (len * 2) + 1 > PEM_BUFSIZE)
+ return;
for (i=0; i<len; i++)
{
buf[j+i*2] =map[(str[i]>>4)&0x0f];
for (i=0; i<len; i++)
{
buf[j+i*2] =map[(str[i]>>4)&0x0f];
@@
-299,7
+301,7
@@
int PEM_ASN1_write_bio(int (*i2d)(), const char *name, BIO *bp, char *x,
if ((dsize=i2d(x,NULL)) < 0)
{
if ((dsize=i2d(x,NULL)) < 0)
{
- PEMerr(PEM_F_PEM_ASN1_WRITE_BIO,ERR_R_
MALLOC_FAILURE
);
+ PEMerr(PEM_F_PEM_ASN1_WRITE_BIO,ERR_R_
ASN1_LIB
);
dsize=0;
goto err;
}
dsize=0;
goto err;
}
@@
-430,6
+432,7
@@
int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher)
int o;
const EVP_CIPHER *enc=NULL;
char *p,c;
int o;
const EVP_CIPHER *enc=NULL;
char *p,c;
+ char **header_pp = &header;
cipher->cipher=NULL;
if ((header == NULL) || (*header == '\0') || (*header == '\n'))
cipher->cipher=NULL;
if ((header == NULL) || (*header == '\0') || (*header == '\n'))
@@
-476,15
+479,16
@@
int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher)
PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO,PEM_R_UNSUPPORTED_ENCRYPTION);
return(0);
}
PEMerr(PEM_F_PEM_GET_EVP_CIPHER_INFO,PEM_R_UNSUPPORTED_ENCRYPTION);
return(0);
}
- if (!load_iv((unsigned char **)&header,&(cipher->iv[0]),enc->iv_len)) return(0);
+ if (!load_iv(header_pp,&(cipher->iv[0]),enc->iv_len))
+ return(0);
return(1);
}
return(1);
}
-static int load_iv(
unsigned
char **fromp, unsigned char *to, int num)
+static int load_iv(char **fromp, unsigned char *to, int num)
{
int v,i;
{
int v,i;
-
unsigned
char *from;
+ char *from;
from= *fromp;
for (i=0; i<num; i++) to[i]=0;
from= *fromp;
for (i=0; i<num; i++) to[i]=0;
@@
-533,7
+537,7
@@
int PEM_write_bio(BIO *bp, const char *name, char *header, unsigned char *data,
long len)
{
int nlen,n,i,j,outl;
long len)
{
int nlen,n,i,j,outl;
- unsigned char *buf;
+ unsigned char *buf
= NULL
;
EVP_ENCODE_CTX ctx;
int reason=ERR_R_BUF_LIB;
EVP_ENCODE_CTX ctx;
int reason=ERR_R_BUF_LIB;
@@
-553,7
+557,7
@@
int PEM_write_bio(BIO *bp, const char *name, char *header, unsigned char *data,
goto err;
}
goto err;
}
- buf
=(unsigned char *)
OPENSSL_malloc(PEM_BUFSIZE*8);
+ buf
=
OPENSSL_malloc(PEM_BUFSIZE*8);
if (buf == NULL)
{
reason=ERR_R_MALLOC_FAILURE;
if (buf == NULL)
{
reason=ERR_R_MALLOC_FAILURE;
@@
-574,12
+578,15
@@
int PEM_write_bio(BIO *bp, const char *name, char *header, unsigned char *data,
EVP_EncodeFinal(&ctx,buf,&outl);
if ((outl > 0) && (BIO_write(bp,(char *)buf,outl) != outl)) goto err;
OPENSSL_free(buf);
EVP_EncodeFinal(&ctx,buf,&outl);
if ((outl > 0) && (BIO_write(bp,(char *)buf,outl) != outl)) goto err;
OPENSSL_free(buf);
+ buf = NULL;
if ( (BIO_write(bp,"-----END ",9) != 9) ||
(BIO_write(bp,name,nlen) != nlen) ||
(BIO_write(bp,"-----\n",6) != 6))
goto err;
return(i+outl);
err:
if ( (BIO_write(bp,"-----END ",9) != 9) ||
(BIO_write(bp,name,nlen) != nlen) ||
(BIO_write(bp,"-----\n",6) != 6))
goto err;
return(i+outl);
err:
+ if (buf)
+ OPENSSL_free(buf);
PEMerr(PEM_F_PEM_WRITE_BIO,reason);
return(0);
}
PEMerr(PEM_F_PEM_WRITE_BIO,reason);
return(0);
}
@@
-618,6
+625,9
@@
int PEM_read_bio(BIO *bp, char **name, char **header, unsigned char **data,
dataB=BUF_MEM_new();
if ((nameB == NULL) || (headerB == NULL) || (dataB == NULL))
{
dataB=BUF_MEM_new();
if ((nameB == NULL) || (headerB == NULL) || (dataB == NULL))
{
+ BUF_MEM_free(nameB);
+ BUF_MEM_free(headerB);
+ BUF_MEM_free(dataB);
PEMerr(PEM_F_PEM_READ_BIO,ERR_R_MALLOC_FAILURE);
return(0);
}
PEMerr(PEM_F_PEM_READ_BIO,ERR_R_MALLOC_FAILURE);
return(0);
}