common,agent,dirmngr,g10,tools: Fix split_fields API.

* common/stringhelp.h (split_fields): Use const * for the strings in
the ARRAY.
(split_fields_colon): Likewise.
* common/stringhelp.c (split_fields, split_fields_colon): Fix
the implementation.
* agent/call-scd.c, agent/command.c: Follow the change.
* common/t-stringhelp.c, dirmngr/loadswdb.c: Likewise.
* g10/call-agent.c, tools/card-call-scd.c: Likewise.
* tools/card-yubikey.c, tools/gpg-card.c: Likewise.
* tools/gpg-card.h, tools/gpg-wks-client.c: Likewise.
* tools/gpgconf-comp.c, tools/gpgconf.c: Likewise.
* tools/wks-util.c: Likewise.

--

The strings in the ARRAY don't need to be released by caller, as those
are references.  It's easier to follow the code when it's explicitly
const *.

Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
NIIBE Yutaka 2020-09-18 10:20:23 +09:00
parent 8ff3663027
commit dfdcf14738
15 changed files with 33 additions and 31 deletions

View File

@ -682,7 +682,7 @@ readkey_status_cb (void *opaque, const char *line)
* Here we only need the keyref. We use only the first received
* KEYPAIRINFO; it is possible to receive several if there are
* two or more active cards with the same key. */
char *fields[2];
const char *fields[2];
int nfields;
line_buffer = xtrystrdup (line);

View File

@ -2804,7 +2804,7 @@ cmd_keytocard (assuan_context_t ctx, char *line)
ctrl_t ctrl = assuan_get_pointer (ctx);
int force;
gpg_error_t err = 0;
char *argv[5];
const char *argv[5];
int argc;
unsigned char grip[20];
const char *serialno, *timestamp_str, *keyref;
@ -3501,7 +3501,7 @@ cmd_getinfo (assuan_context_t ctx, char *line)
{
#if GCRYPT_VERSION_NUMBER >= 0x010800
char *buf;
char *fields[5];
const char *fields[5];
buf = gcry_get_config (0, "rng-type");
if (buf

View File

@ -1363,10 +1363,11 @@ strtokenize (const char *string, const char *delim)
* foo (fields[1]);
*/
int
split_fields (char *string, char **array, int arraysize)
split_fields (char *string, const char **array, int arraysize)
{
int n = 0;
char *p, *pend;
const char *p;
char *pend;
for (p = string; *p == ' '; p++)
;
@ -1401,10 +1402,11 @@ split_fields (char *string, char **array, int arraysize)
* foo (fields[1]);
*/
int
split_fields_colon (char *string, char **array, int arraysize)
split_fields_colon (char *string, const char **array, int arraysize)
{
int n = 0;
char *p, *pend;
const char *p;
char *pend;
p = string;
do

View File

@ -151,11 +151,11 @@ char **strtokenize (const char *string, const char *delim);
/* Split STRING into space delimited fields and store them in the
* provided ARRAY. */
int split_fields (char *string, char **array, int arraysize);
int split_fields (char *string, const char **array, int arraysize);
/* Split STRING into colon delimited fields and store them in the
* provided ARRAY. */
int split_fields_colon (char *string, char **array, int arraysize);
int split_fields_colon (char *string, const char **array, int arraysize);
/* Return True if MYVERSION is greater or equal than REQ_VERSION. */
int compare_version_strings (const char *my_version, const char *req_version);

View File

@ -717,7 +717,7 @@ test_split_fields (void)
};
int tidx;
char *fields[10];
const char *fields[10];
int field_count_expected, nfields, field_count, i;
char *s2;
@ -792,7 +792,7 @@ test_split_fields_colon (void)
};
int tidx;
char *fields[10];
const char *fields[10];
int field_count_expected, nfields, field_count, i;
char *s2;

View File

@ -43,7 +43,7 @@ time_of_saved_swdb (const char *fname, time_t *r_filedate, time_t *r_verified)
size_t length_of_line = 0;
size_t maxlen;
ssize_t len;
char *fields[2];
const char *fields[2];
gnupg_isotime_t isot;
time_t filedate = (time_t)(-1);
time_t verified = (time_t)(-1);
@ -198,7 +198,7 @@ verify_status_cb (void *opaque, const char *keyword, char *args)
/* We care only about the first valid signature. */
if (!strcmp (keyword, "VALIDSIG") && !parm->anyvalid)
{
char *fields[3];
const char *fields[3];
parm->anyvalid = 1;
if (split_fields (args, fields, DIM (fields)) >= 3)

View File

@ -842,7 +842,7 @@ scd_keypairinfo_status_cb (void *opaque, const char *line)
/* The format of such a line is:
* KEYPAIRINFO <hexgrip> <keyref> [usage] [keytime]
*/
char *fields[4];
const char *fields[4];
int nfields;
const char *hexgrp, *keyref, *usage;
time_t atime;
@ -1467,7 +1467,7 @@ readkey_status_cb (void *opaque, const char *line)
* Note that we use only the first valid KEYPAIRINFO line. More
* lines are possible if a second card carries the same key.
*/
char *fields[4];
const char *fields[4];
int nfields;
time_t atime;
@ -2099,7 +2099,7 @@ keyinfo_status_cb (void *opaque, const char *line)
* 6 7 8
* <sshfpr> <ttl> <flags>
*/
char *fields[9];
const char *fields[9];
if (split_fields (s, fields, DIM (fields)) == 9)
{

View File

@ -962,7 +962,7 @@ learn_status_cb (void *opaque, const char *line)
/* The format of such a line is:
* KEYPAIRINFO <hexgrip> <keyref> [usage] [keytime]
*/
char *fields[4];
const char *fields[4];
int nfields;
const char *hexgrp, *usage;
time_t keytime;

View File

@ -310,7 +310,7 @@ yk_enable_disable (struct ykapps_s *yk, struct iface_s *iface,
* stream to output information. This function must only be called on
* Yubikeys. */
gpg_error_t
yubikey_commands (card_info_t info, estream_t fp, int argc, char *argv[])
yubikey_commands (card_info_t info, estream_t fp, int argc, const char *argv[])
{
gpg_error_t err;
enum {ykLIST, ykENABLE, ykDISABLE } cmd;

View File

@ -2189,11 +2189,11 @@ cmd_writekey (card_info_t info, char *argstr)
{
gpg_error_t err;
int opt_force;
char *argv[2];
const char *argv[2];
int argc;
char *keyref_buffer = NULL;
char *keyref;
char *keygrip;
const char *keyref;
const char *keygrip;
if (!info)
return print_help
@ -3376,7 +3376,7 @@ cmd_yubikey (card_info_t info, char *argstr)
{
gpg_error_t err, err2;
estream_t fp = opt.interactive? NULL : es_stdout;
char *words[20];
const char *words[20];
int nwords;
if (!info)

View File

@ -244,7 +244,7 @@ unsigned long agent_get_s2k_count (void);
/*-- card-yubikey.c --*/
gpg_error_t yubikey_commands (card_info_t info,
estream_t fp, int argc, char *argv[]);
estream_t fp, int argc, const char *argv[]);
#endif /*GNUPG_GPG_CARD_H*/

View File

@ -558,7 +558,7 @@ decrypt_stream_status_cb (void *opaque, const char *keyword, char *args)
log_debug ("gpg status: %s %s\n", keyword, args);
if (!strcmp (keyword, "DECRYPTION_KEY") && !decinfo->fpr)
{
char *fields[3];
const char *fields[3];
if (split_fields (args, fields, DIM (fields)) >= 3)
{
@ -1199,7 +1199,7 @@ static void
encrypt_response_status_cb (void *opaque, const char *keyword, char *args)
{
gpg_error_t *failure = opaque;
char *fields[2];
const char *fields[2];
if (DBG_CRYPTO)
log_debug ("gpg status: %s %s\n", keyword, args);

View File

@ -1553,8 +1553,8 @@ retrieve_options_from_program (gc_component_id_t component, int only_installed)
while ((length = es_read_line (outfp, &line, &line_len, NULL)) > 0)
{
char *fields[4];
char *optname, *optdesc;
const char *fields[4];
const char *optname, *optdesc;
unsigned int optflags;
int short_opt;
gc_arg_type_t arg_type;
@ -1621,8 +1621,8 @@ retrieve_options_from_program (gc_component_id_t component, int only_installed)
string_array_size,
sizeof *string_array);
}
string_array[string_array_used++] = optname = xstrdup (fields[0]);
string_array[string_array_used++] = optdesc = xstrdup (fields[3]);
optname = string_array[string_array_used++] = xstrdup (fields[0]);
optdesc = string_array[string_array_used++] = xstrdup (fields[3]);
/* Create an option table which can then be supplied to
* gpgrt_parser. Unfortunately there is no private pointer in

View File

@ -361,7 +361,7 @@ query_swdb (estream_t out, const char *name, const char *current_version)
size_t length_of_line = 0;
size_t maxlen;
ssize_t len;
char *fields[2];
const char *fields[2];
char *p;
gnupg_isotime_t filedate = {0};
gnupg_isotime_t verified = {0};

View File

@ -953,7 +953,7 @@ install_key_from_spec_file (const char *fname)
char *line = NULL;
size_t linelen = 0;
size_t maxlen = 2048;
char *fields[2];
const char *fields[2];
unsigned int lnr = 0;
if (!fname || !strcmp (fname, ""))