aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--g10/ChangeLog6
-rw-r--r--g10/card-util.c24
2 files changed, 30 insertions, 0 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 6cb971db5..dffa68a95 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,9 @@
+2004-04-26 Werner Koch <[email protected]>
+
+ * card-util.c (change_name): Check that the NAME is not too long.
+ (change_url): Likewise.
+ (change_login): Likewise.
+
2004-03-23 Werner Koch <[email protected]>
* g10.c: New options --gpgconf-list, --debug-level and --log-file
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));