aboutsummaryrefslogtreecommitdiffstats
path: root/g10/card-util.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/card-util.c')
-rw-r--r--g10/card-util.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/g10/card-util.c b/g10/card-util.c
index c40cfd84d..c56ab24aa 100644
--- a/g10/card-util.c
+++ b/g10/card-util.c
@@ -445,6 +445,14 @@ change_name (void)
if (*p == ' ')
*p = '<';
+ if (strlen (isoname) > 39 )
+ {
+ tty_printf (_("Error: Combined name too long "
+ "(limit is %d characters).\n"), 39);
+ xfree (isoname);
+ return -1;
+ }
+
log_debug ("setting Name to `%s'\n", isoname);
rc = agent_scd_setattr ("DISP-NAME", isoname, strlen (isoname) );
if (rc)
@@ -467,6 +475,14 @@ change_url (void)
trim_spaces (url);
cpr_kill_prompt ();
+ if (strlen (url) > 254 )
+ {
+ tty_printf (_("Error: URL too long "
+ "(limit is %d characters).\n"), 254);
+ xfree (url);
+ return -1;
+ }
+
rc = agent_scd_setattr ("PUBKEY-URL", url, strlen (url) );
if (rc)
log_error ("error setting URL: %s\n", gpg_strerror (rc));
@@ -487,6 +503,14 @@ change_login (void)
trim_spaces (data);
cpr_kill_prompt ();
+ if (strlen (data) > 254 )
+ {
+ tty_printf (_("Error: Login data too long "
+ "(limit is %d characters).\n"), 254);
+ xfree (data);
+ return -1;
+ }
+
rc = agent_scd_setattr ("LOGIN-DATA", data, strlen (data) );
if (rc)
log_error ("error setting login data: %s\n", gpg_strerror (rc));