projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Set EXPORT_VAR_AS_FN for BC-32 to work around a compiler bug,
[openssl.git]
/
apps
/
req.c
diff --git
a/apps/req.c
b/apps/req.c
index c4bec05436a91a15026f2e92b6ad0b1b383ff56e..4fa5ae6fe8df924dd10a8579b1a422e1783c7275 100644
(file)
--- a/
apps/req.c
+++ b/
apps/req.c
@@
-56,6
+56,12
@@
* [including the GNU Public Licence.]
*/
* [including the GNU Public Licence.]
*/
+/* Until the key-gen callbacks are modified to use newer prototypes, we allow
+ * deprecated functions for openssl-internal code */
+#ifdef OPENSSL_NO_DEPRECATED
+#undef OPENSSL_NO_DEPRECATED
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
@@
-73,6
+79,7
@@
#include <openssl/x509v3.h>
#include <openssl/objects.h>
#include <openssl/pem.h>
#include <openssl/x509v3.h>
#include <openssl/objects.h>
#include <openssl/pem.h>
+#include "../crypto/cryptlib.h"
#define SECTION "req"
#define SECTION "req"
@@
-134,7
+141,6
@@
static int req_check_len(int len,int n_min,int n_max);
static int check_end(char *str, char *end);
#ifndef MONOLITH
static char *default_config_file=NULL;
static int check_end(char *str, char *end);
#ifndef MONOLITH
static char *default_config_file=NULL;
-static CONF *config=NULL;
#endif
static CONF *req_conf=NULL;
static int batch=0;
#endif
static CONF *req_conf=NULL;
static int batch=0;
@@
-180,7
+186,7
@@
int MAIN(int argc, char **argv)
const EVP_MD *md_alg=NULL,*digest=EVP_md5();
unsigned long chtype = MBSTRING_ASC;
#ifndef MONOLITH
const EVP_MD *md_alg=NULL,*digest=EVP_md5();
unsigned long chtype = MBSTRING_ASC;
#ifndef MONOLITH
-
MS_STATIC char config_name[256]
;
+
char *to_free
;
long errline;
#endif
long errline;
#endif
@@
-328,13
+334,13
@@
int MAIN(int argc, char **argv)
else
#endif
#ifndef OPENSSL_NO_ECDSA
else
#endif
#ifndef OPENSSL_NO_ECDSA
- if (strncmp("ec:",p,
4
) == 0)
+ if (strncmp("ec:",p,
3
) == 0)
{
X509 *xtmp=NULL;
EVP_PKEY *dtmp;
pkey_type=TYPE_EC;
{
X509 *xtmp=NULL;
EVP_PKEY *dtmp;
pkey_type=TYPE_EC;
- p+=
6
;
+ p+=
3
;
if ((in=BIO_new_file(p,"r")) == NULL)
{
perror(p);
if ((in=BIO_new_file(p,"r")) == NULL)
{
perror(p);
@@
-383,7
+389,9
@@
int MAIN(int argc, char **argv)
}
else
#endif
}
else
#endif
- pkey_type=TYPE_RSA;
+ {
+ goto bad;
+ }
newreq=1;
}
newreq=1;
}
@@
-525,14
+533,7
@@
bad:
if (p == NULL)
p=getenv("SSLEAY_CONF");
if (p == NULL)
if (p == NULL)
p=getenv("SSLEAY_CONF");
if (p == NULL)
- {
- strcpy(config_name,X509_get_default_cert_area());
-#ifndef OPENSSL_SYS_VMS
- strcat(config_name,"/");
-#endif
- strcat(config_name,OPENSSL_CONF);
- p=config_name;
- }
+ p=to_free=make_config_name();
default_config_file=p;
config=NCONF_new(NULL);
i=NCONF_load(config, p, &errline);
default_config_file=p;
config=NCONF_new(NULL);
i=NCONF_load(config, p, &errline);
@@
-540,7
+541,7
@@
bad:
if (template != NULL)
{
if (template != NULL)
{
- long errline;
+ long errline
= -1
;
if( verbose )
BIO_printf(bio_err,"Using configuration from %s\n",template);
if( verbose )
BIO_printf(bio_err,"Using configuration from %s\n",template);
@@
-1129,6
+1130,10
@@
loop:
}
ex=0;
end:
}
ex=0;
end:
+#ifndef MONOLITH
+ if(to_free)
+ OPENSSL_free(to_free);
+#endif
if (ex)
{
ERR_print_errors(bio_err);
if (ex)
{
ERR_print_errors(bio_err);
@@
-1150,7
+1155,7
@@
end:
if (ec_params != NULL) EC_KEY_free(ec_params);
#endif
apps_shutdown();
if (ec_params != NULL) EC_KEY_free(ec_params);
#endif
apps_shutdown();
- EXIT(ex);
+
OPENSSL_
EXIT(ex);
}
static int make_REQ(X509_REQ *req, EVP_PKEY *pkey, char *subj, int attribs,
}
static int make_REQ(X509_REQ *req, EVP_PKEY *pkey, char *subj, int attribs,
@@
-1291,13
+1296,19
@@
start: for (;;)
}
/* If OBJ not recognised ignore it */
if ((nid=OBJ_txt2nid(type)) == NID_undef) goto start;
}
/* If OBJ not recognised ignore it */
if ((nid=OBJ_txt2nid(type)) == NID_undef) goto start;
+
+ if(strlen(v->name) > sizeof buf-9)
+ {
+ BIO_printf(bio_err,"Name '%s' too long\n",v->name);
+ return 0;
+ }
+
sprintf(buf,"%s_default",v->name);
if ((def=NCONF_get_string(req_conf,dn_sect,buf)) == NULL)
{
ERR_clear_error();
def="";
}
sprintf(buf,"%s_default",v->name);
if ((def=NCONF_get_string(req_conf,dn_sect,buf)) == NULL)
{
ERR_clear_error();
def="";
}
-
sprintf(buf,"%s_value",v->name);
if ((value=NCONF_get_string(req_conf,dn_sect,buf)) == NULL)
{
sprintf(buf,"%s_value",v->name);
if ((value=NCONF_get_string(req_conf,dn_sect,buf)) == NULL)
{
@@
-1344,6
+1355,12
@@
start2: for (;;)
if ((nid=OBJ_txt2nid(type)) == NID_undef)
goto start2;
if ((nid=OBJ_txt2nid(type)) == NID_undef)
goto start2;
+ if(strlen(v->name) > sizeof buf-9)
+ {
+ BIO_printf(bio_err,"Name '%s' too long\n",v->name);
+ return 0;
+ }
+
sprintf(buf,"%s_default",type);
if ((def=NCONF_get_string(req_conf,attr_sect,buf))
== NULL)
sprintf(buf,"%s_default",type);
if ((def=NCONF_get_string(req_conf,attr_sect,buf))
== NULL)
@@
-1447,6
+1464,7
@@
start:
(void)BIO_flush(bio_err);
if(value != NULL)
{
(void)BIO_flush(bio_err);
if(value != NULL)
{
+ OPENSSL_assert(strlen(value) < sizeof buf-2);
strcpy(buf,value);
strcat(buf,"\n");
BIO_printf(bio_err,"%s\n",value);
strcpy(buf,value);
strcat(buf,"\n");
BIO_printf(bio_err,"%s\n",value);
@@
-1456,7
+1474,7
@@
start:
buf[0]='\0';
if (!batch)
{
buf[0]='\0';
if (!batch)
{
- fgets(buf,
1024
,stdin);
+ fgets(buf,
sizeof buf
,stdin);
}
else
{
}
else
{
@@
-1505,6
+1523,7
@@
start:
(void)BIO_flush(bio_err);
if (value != NULL)
{
(void)BIO_flush(bio_err);
if (value != NULL)
{
+ OPENSSL_assert(strlen(value) < sizeof buf-2);
strcpy(buf,value);
strcat(buf,"\n");
BIO_printf(bio_err,"%s\n",value);
strcpy(buf,value);
strcat(buf,"\n");
BIO_printf(bio_err,"%s\n",value);
@@
-1514,7
+1533,7
@@
start:
buf[0]='\0';
if (!batch)
{
buf[0]='\0';
if (!batch)
{
- fgets(buf,
1024
,stdin);
+ fgets(buf,
sizeof buf
,stdin);
}
else
{
}
else
{