aboutsummaryrefslogtreecommitdiffstats
path: root/sm
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2024-03-12 15:00:55 +0000
committerWerner Koch <[email protected]>2024-03-12 15:00:55 +0000
commit4485930f9fd9ff02ca5c8472cf6aed3fdb1280cf (patch)
tree683140a4a33b0f3accf5b1f2455274d251581970 /sm
parentgpg: Fix a possible segv due to an uninitialized gcrypt context. (diff)
parentPost release updates (diff)
downloadgnupg-4485930f9fd9ff02ca5c8472cf6aed3fdb1280cf.tar.gz
gnupg-4485930f9fd9ff02ca5c8472cf6aed3fdb1280cf.zip
Merge branch 'STABLE-BRANCH-2-4'
-- Resolved conflicts: NEWS common/exechelp-w32.c configure.ac
Diffstat (limited to 'sm')
-rw-r--r--sm/gpgsm.c16
-rw-r--r--sm/gpgsm.h6
-rw-r--r--sm/minip12.c43
3 files changed, 39 insertions, 26 deletions
diff --git a/sm/gpgsm.c b/sm/gpgsm.c
index 4b6c353a0..7c866d0b8 100644
--- a/sm/gpgsm.c
+++ b/sm/gpgsm.c
@@ -1330,8 +1330,19 @@ main ( int argc, char **argv)
case oHomedir: gnupg_set_homedir (pargs.r.ret_str); break;
case oChUid: break; /* Command line only (see above). */
- case oAgentProgram: opt.agent_program = pargs.r.ret_str; break;
- case oKeyboxdProgram: opt.keyboxd_program = pargs.r.ret_str; break;
+
+ case oAgentProgram:
+ xfree (opt.agent_program);
+ opt.agent_program = make_filename (pargs.r.ret_str, NULL);
+ break;
+ case oKeyboxdProgram:
+ xfree (opt.keyboxd_program);
+ opt.keyboxd_program = make_filename (pargs.r.ret_str, NULL);
+ break;
+ case oDirmngrProgram:
+ xfree (opt.dirmngr_program);
+ opt.dirmngr_program = make_filename (pargs.r.ret_str, NULL);
+ break;
case oDisplay:
set_opt_session_env ("DISPLAY", pargs.r.ret_str);
@@ -1349,7 +1360,6 @@ main ( int argc, char **argv)
case oLCctype: opt.lc_ctype = xstrdup (pargs.r.ret_str); break;
case oLCmessages: opt.lc_messages = xstrdup (pargs.r.ret_str); break;
- case oDirmngrProgram: opt.dirmngr_program = pargs.r.ret_str; break;
case oDisableDirmngr: opt.disable_dirmngr = 1; break;
case oPreferSystemDirmngr: /* Obsolete */; break;
case oProtectToolProgram:
diff --git a/sm/gpgsm.h b/sm/gpgsm.h
index eb9ba9f17..673ea1687 100644
--- a/sm/gpgsm.h
+++ b/sm/gpgsm.h
@@ -60,16 +60,16 @@ struct
int use_keyboxd; /* Use the external keyboxd as storage backend. */
const char *config_filename; /* Name of the used config file. */
- const char *agent_program;
+ char *agent_program;
- const char *keyboxd_program;
+ char *keyboxd_program;
session_env_t session_env;
char *lc_ctype;
char *lc_messages;
int autostart;
- const char *dirmngr_program;
+ char *dirmngr_program;
int disable_dirmngr; /* Do not do any dirmngr calls. */
const char *protect_tool_program;
char *outfile; /* name of output file */
diff --git a/sm/minip12.c b/sm/minip12.c
index 2e7b50e1c..4a1fab050 100644
--- a/sm/minip12.c
+++ b/sm/minip12.c
@@ -677,7 +677,7 @@ parse_bag_encrypted_data (struct p12_parse_ctx_s *ctx, tlv_parser_t tlv)
const unsigned char *data;
size_t datalen;
int intval;
- char salt[20];
+ char salt[32];
size_t saltlen;
char iv[16];
unsigned int iter;
@@ -1945,43 +1945,46 @@ p12_parse (const unsigned char *buffer, size_t length, const char *pw,
}
where = "pfx";
- if (tlv_next (tlv))
+ if ((err = tlv_next (tlv)))
goto bailout;
- if (tlv_expect_sequence (tlv))
+ if ((err = tlv_expect_sequence (tlv)))
goto bailout;
where = "pfxVersion";
- if (tlv_next (tlv))
+ if ((err = tlv_next (tlv)))
goto bailout;
- if (tlv_expect_integer (tlv, &intval) || intval != 3)
+ if ((err = tlv_expect_integer (tlv, &intval)) || intval != 3)
goto bailout;
where = "authSave";
- if (tlv_next (tlv))
+ if ((err = tlv_next (tlv)))
goto bailout;
- if (tlv_expect_sequence (tlv))
+ if ((err = tlv_expect_sequence (tlv)))
goto bailout;
- if (tlv_next (tlv))
+ if ((err = tlv_next (tlv)))
goto bailout;
- if (tlv_expect_object_id (tlv, &oid, &oidlen))
+ if ((err = tlv_expect_object_id (tlv, &oid, &oidlen)))
goto bailout;
if (oidlen != DIM(oid_data) || memcmp (oid, oid_data, DIM(oid_data)))
- goto bailout;
+ {
+ err = gpg_error (GPG_ERR_INV_OBJ);
+ goto bailout;
+ }
- if (tlv_next (tlv))
+ if ((err = tlv_next (tlv)))
goto bailout;
- if (tlv_expect_context_tag (tlv, &intval) || intval != 0 )
+ if ((err = tlv_expect_context_tag (tlv, &intval)) || intval != 0 )
goto bailout;
- if (tlv_next (tlv))
+ if ((err = tlv_next (tlv)))
goto bailout;
- if (tlv_expect_octet_string (tlv, 1, NULL, NULL))
+ if ((err = tlv_expect_octet_string (tlv, 1, NULL, NULL)))
goto bailout;
if (tlv_peek (tlv, CLASS_UNIVERSAL, TAG_OCTET_STRING))
{
- if (tlv_next (tlv))
+ if ((err = tlv_next (tlv)))
goto bailout;
err = tlv_expect_octet_string (tlv, 1, NULL, NULL);
if (err)
@@ -1989,9 +1992,9 @@ p12_parse (const unsigned char *buffer, size_t length, const char *pw,
}
where = "bags";
- if (tlv_next (tlv))
+ if ((err = tlv_next (tlv)))
goto bailout;
- if (tlv_expect_sequence (tlv))
+ if ((err = tlv_expect_sequence (tlv)))
goto bailout;
startlevel = tlv_parser_level (tlv);
@@ -2000,12 +2003,12 @@ p12_parse (const unsigned char *buffer, size_t length, const char *pw,
{
where = "bag-sequence";
tlv_parser_dump_state (where, NULL, tlv);
- if (tlv_expect_sequence (tlv))
+ if ((err = tlv_expect_sequence (tlv)))
goto bailout;
- if (tlv_next (tlv))
+ if ((err = tlv_next (tlv)))
goto bailout;
- if (tlv_expect_object_id (tlv, &oid, &oidlen))
+ if ((err = tlv_expect_object_id (tlv, &oid, &oidlen)))
goto bailout;
if (oidlen == DIM(oid_encryptedData)