1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-03-28 22:49:59 +01:00

* keygen.c (proc_parameter_file): Sanity check items in keygen batch

file.  Noted by Michael Schierl.
This commit is contained in:
David Shaw 2005-08-05 03:30:13 +00:00
parent c765d1ee0c
commit 533bc3e813
2 changed files with 127 additions and 102 deletions

View File

@ -1,5 +1,8 @@
2005-08-04 David Shaw <dshaw@jabberwocky.com>
* keygen.c (proc_parameter_file): Sanity check items in keygen
batch file. Noted by Michael Schierl.
* pkclist.c (do_edit_ownertrust): Don't allow ownertrust level 0.
Noted by Michael Schierl.

View File

@ -2063,36 +2063,51 @@ proc_parameter_file( struct para_data_s *para, const char *fname,
const char *s1, *s2, *s3;
size_t n;
char *p;
int i;
int have_user_id=0;
/* Check that we have all required parameters. */
assert( get_parameter( para, pKEYTYPE ) );
i = get_parameter_algo( para, pKEYTYPE );
if( i < 1 || check_pubkey_algo2( i, PUBKEY_USAGE_SIG ) ) {
r = get_parameter( para, pKEYTYPE );
if(r)
{
if(check_pubkey_algo2(get_parameter_algo(para,pKEYTYPE),
PUBKEY_USAGE_SIG))
{
log_error("%s:%d: invalid algorithm\n", fname, r->lnr );
return -1;
}
}
else
{
log_error("%s: no Key-Type specified\n",fname);
return -1;
}
if (parse_parameter_usage (fname, para, pKEYUSAGE))
return -1;
i = get_parameter_algo( para, pSUBKEYTYPE );
if( i > 0 && check_pubkey_algo( i ) ) {
r = get_parameter( para, pSUBKEYTYPE );
if(r)
{
if(check_pubkey_algo( get_parameter_algo( para, pSUBKEYTYPE)))
{
log_error("%s:%d: invalid algorithm\n", fname, r->lnr );
return -1;
}
if (i > 0 && parse_parameter_usage (fname, para, pSUBKEYUSAGE))
if(parse_parameter_usage (fname, para, pSUBKEYUSAGE))
return -1;
}
if( !get_parameter_value( para, pUSERID ) ) {
if( get_parameter_value( para, pUSERID ) )
have_user_id=1;
else
{
/* create the formatted user ID */
s1 = get_parameter_value( para, pNAMEREAL );
s2 = get_parameter_value( para, pNAMECOMMENT );
s3 = get_parameter_value( para, pNAMEEMAIL );
if( s1 || s2 || s3 ) {
if( s1 || s2 || s3 )
{
n = (s1?strlen(s1):0) + (s2?strlen(s2):0) + (s3?strlen(s3):0);
r = xmalloc_clear( sizeof *r + n + 20 );
r->key = pUSERID;
@ -2105,9 +2120,16 @@ proc_parameter_file( struct para_data_s *para, const char *fname,
p = stpcpy(stpcpy(stpcpy(p," <"), s3 ),">");
r->next = para;
para = r;
have_user_id=1;
}
}
if(!have_user_id)
{
log_error("%s: no User-ID specified\n",fname);
return -1;
}
/* Set preferences, if any. */
keygen_set_std_prefs(get_parameter_value( para, pPREFERENCES ), 0);