]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: fix off-by-one in sshbuf_dtob64() base64 wrapping that could
authordjm@openbsd.org <djm@openbsd.org>
Thu, 18 Jul 2019 13:26:00 +0000 (13:26 +0000)
committerDamien Miller <djm@mindrot.org>
Thu, 18 Jul 2019 13:27:09 +0000 (23:27 +1000)
cause extra newlines to be appended at the end of the base64 text (ugly, but
harmless). Found and fixed by Sebastian Kinne

OpenBSD-Commit-ID: 9fe290bd68f706ed8f986a7704ca5a2bd32d7b68

sshbuf-misc.c

index 4a4985fd3f03644cfffa42c674a772d6bd1ddbaf..417ab593e7652dffbf38b0ca1fd58455363eab39 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: sshbuf-misc.c,v 1.9 2019/07/16 13:18:39 djm Exp $     */
+/*     $OpenBSD: sshbuf-misc.c,v 1.10 2019/07/18 13:26:00 djm Exp $    */
 /*
  * Copyright (c) 2011 Damien Miller
  *
@@ -114,7 +114,7 @@ sshbuf_dtob64(const struct sshbuf *d, struct sshbuf *b64, int wrap)
                        if (i % 70 == 69 && (r = sshbuf_put_u8(b64, '\n')) != 0)
                                goto fail;
                }
-               if (i % 70 != 69 && (r = sshbuf_put_u8(b64, '\n')) != 0)
+               if ((i - 1) % 70 != 69 && (r = sshbuf_put_u8(b64, '\n')) != 0)
                        goto fail;
        } else {
                if ((r = sshbuf_put(b64, s, strlen(s))) != 0)