aboutsummaryrefslogtreecommitdiffstats
path: root/g10/export.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/export.c')
-rw-r--r--g10/export.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/g10/export.c b/g10/export.c
index 98c4623cf..c7cfcfaa4 100644
--- a/g10/export.c
+++ b/g10/export.c
@@ -2133,14 +2133,15 @@ key_to_sshblob (membuf_t *mb, const char *identifier, ...)
size_t buflen;
gcry_mpi_t a;
- ulongtobuf (nbuf, (ulong)strlen (identifier));
+ buflen = strlen (identifier);
+ ulongtobuf (nbuf, (ulong)buflen);
put_membuf (mb, nbuf, 4);
- put_membuf_str (mb, identifier);
- if (!strncmp (identifier, "ecdsa-sha2-", 11))
+ put_membuf (mb, identifier, buflen);
+ if (buflen > 11 && !memcmp (identifier, "ecdsa-sha2-", 11))
{
- ulongtobuf (nbuf, (ulong)strlen (identifier+11));
+ ulongtobuf (nbuf, (ulong)(buflen - 11));
put_membuf (mb, nbuf, 4);
- put_membuf_str (mb, identifier+11);
+ put_membuf (mb, identifier+11, buflen - 11);
}
va_start (arg_ptr, identifier);
while ((a = va_arg (arg_ptr, gcry_mpi_t)))