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 + + * card-util.c (change_name): Check that the NAME is not too long. + (change_url): Likewise. + (change_login): Likewise. + 2004-03-23 Werner Koch * 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));