core: Fix status parsing for decrypt + verify
* src/decrypt.c (parse_status_error): Don't modify args. -- Otherwise chained status handlers will not see the full args which resulted in a parse error in the verify status handler. GnuPG-Bug-Id: T3310
This commit is contained in:
parent
c7be41a5f8
commit
d3796e4504
@ -145,10 +145,18 @@ parse_status_error (char *args, op_data_t opd)
|
|||||||
gpgme_error_t err;
|
gpgme_error_t err;
|
||||||
char *field[3];
|
char *field[3];
|
||||||
int nfields;
|
int nfields;
|
||||||
|
char *args2;
|
||||||
|
|
||||||
nfields = _gpgme_split_fields (args, field, DIM (field));
|
if (!args)
|
||||||
|
return trace_gpg_error (GPG_ERR_INV_ENGINE);
|
||||||
|
|
||||||
|
args2 = strdup (args); /* Split modifies the input string. */
|
||||||
|
nfields = _gpgme_split_fields (args2, field, DIM (field));
|
||||||
if (nfields < 1)
|
if (nfields < 1)
|
||||||
return trace_gpg_error (GPG_ERR_INV_ENGINE); /* Required arg missing. */
|
{
|
||||||
|
free (args2);
|
||||||
|
return trace_gpg_error (GPG_ERR_INV_ENGINE); /* Required arg missing. */
|
||||||
|
}
|
||||||
err = nfields < 2 ? 0 : atoi (field[1]);
|
err = nfields < 2 ? 0 : atoi (field[1]);
|
||||||
|
|
||||||
if (!strcmp (field[0], "decrypt.algorithm"))
|
if (!strcmp (field[0], "decrypt.algorithm"))
|
||||||
@ -159,7 +167,10 @@ parse_status_error (char *args, op_data_t opd)
|
|||||||
{
|
{
|
||||||
opd->result.unsupported_algorithm = strdup (field[2]);
|
opd->result.unsupported_algorithm = strdup (field[2]);
|
||||||
if (!opd->result.unsupported_algorithm)
|
if (!opd->result.unsupported_algorithm)
|
||||||
return gpg_error_from_syserror ();
|
{
|
||||||
|
free (args2);
|
||||||
|
return gpg_error_from_syserror ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!strcmp (field[0], "decrypt.keyusage"))
|
else if (!strcmp (field[0], "decrypt.keyusage"))
|
||||||
@ -193,6 +204,7 @@ parse_status_error (char *args, op_data_t opd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
free (args2);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user