summaryrefslogtreecommitdiffstats
path: root/patches/source/vim/patches/7.4.172
diff options
context:
space:
mode:
Diffstat (limited to 'patches/source/vim/patches/7.4.172')
-rw-r--r--patches/source/vim/patches/7.4.172346
1 files changed, 346 insertions, 0 deletions
diff --git a/patches/source/vim/patches/7.4.172 b/patches/source/vim/patches/7.4.172
new file mode 100644
index 000000000..8ad9fca23
--- /dev/null
+++ b/patches/source/vim/patches/7.4.172
@@ -0,0 +1,346 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.172
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.172
+Problem: The blowfish code mentions output feedback, but the code is
+ actually doing cipher feedback.
+Solution: Adjust names and comments.
+Files: src/blowfish.c, src/fileio.c, src/proto/blowfish.pro,
+ src/memline.c
+
+
+*** ../vim-7.4.171/src/blowfish.c 2010-12-17 19:58:18.000000000 +0100
+--- src/blowfish.c 2014-02-11 15:18:12.882118804 +0100
+***************
+*** 6,12 ****
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ * See README.txt for an overview of the Vim source code.
+ *
+! * Blowfish encryption for Vim; in Blowfish output feedback mode.
+ * Contributed by Mohsin Ahmed, http://www.cs.albany.edu/~mosh
+ * Based on http://www.schneier.com/blowfish.html by Bruce Schneier.
+ */
+--- 6,12 ----
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ * See README.txt for an overview of the Vim source code.
+ *
+! * Blowfish encryption for Vim; in Blowfish cipher feedback mode.
+ * Contributed by Mohsin Ahmed, http://www.cs.albany.edu/~mosh
+ * Based on http://www.schneier.com/blowfish.html by Bruce Schneier.
+ */
+***************
+*** 19,25 ****
+
+ #define BF_BLOCK 8
+ #define BF_BLOCK_MASK 7
+! #define BF_OFB_LEN (8*(BF_BLOCK))
+
+ typedef union {
+ UINT32_T ul[2];
+--- 19,25 ----
+
+ #define BF_BLOCK 8
+ #define BF_BLOCK_MASK 7
+! #define BF_CFB_LEN (8*(BF_BLOCK))
+
+ typedef union {
+ UINT32_T ul[2];
+***************
+*** 554,595 ****
+ return err > 0 ? FAIL : OK;
+ }
+
+! /* Output feedback mode. */
+ static int randbyte_offset = 0;
+ static int update_offset = 0;
+! static char_u ofb_buffer[BF_OFB_LEN]; /* 64 bytes */
+
+ /*
+ * Initialize with seed "iv[iv_len]".
+ */
+ void
+! bf_ofb_init(iv, iv_len)
+ char_u *iv;
+ int iv_len;
+ {
+ int i, mi;
+
+ randbyte_offset = update_offset = 0;
+! vim_memset(ofb_buffer, 0, BF_OFB_LEN);
+ if (iv_len > 0)
+ {
+! mi = iv_len > BF_OFB_LEN ? iv_len : BF_OFB_LEN;
+ for (i = 0; i < mi; i++)
+! ofb_buffer[i % BF_OFB_LEN] ^= iv[i % iv_len];
+ }
+ }
+
+! #define BF_OFB_UPDATE(c) { \
+! ofb_buffer[update_offset] ^= (char_u)c; \
+! if (++update_offset == BF_OFB_LEN) \
+ update_offset = 0; \
+ }
+
+ #define BF_RANBYTE(t) { \
+ if ((randbyte_offset & BF_BLOCK_MASK) == 0) \
+! bf_e_cblock(&ofb_buffer[randbyte_offset]); \
+! t = ofb_buffer[randbyte_offset]; \
+! if (++randbyte_offset == BF_OFB_LEN) \
+ randbyte_offset = 0; \
+ }
+
+--- 554,595 ----
+ return err > 0 ? FAIL : OK;
+ }
+
+! /* Cipher feedback mode. */
+ static int randbyte_offset = 0;
+ static int update_offset = 0;
+! static char_u cfb_buffer[BF_CFB_LEN]; /* 64 bytes */
+
+ /*
+ * Initialize with seed "iv[iv_len]".
+ */
+ void
+! bf_cfb_init(iv, iv_len)
+ char_u *iv;
+ int iv_len;
+ {
+ int i, mi;
+
+ randbyte_offset = update_offset = 0;
+! vim_memset(cfb_buffer, 0, BF_CFB_LEN);
+ if (iv_len > 0)
+ {
+! mi = iv_len > BF_CFB_LEN ? iv_len : BF_CFB_LEN;
+ for (i = 0; i < mi; i++)
+! cfb_buffer[i % BF_CFB_LEN] ^= iv[i % iv_len];
+ }
+ }
+
+! #define BF_CFB_UPDATE(c) { \
+! cfb_buffer[update_offset] ^= (char_u)c; \
+! if (++update_offset == BF_CFB_LEN) \
+ update_offset = 0; \
+ }
+
+ #define BF_RANBYTE(t) { \
+ if ((randbyte_offset & BF_BLOCK_MASK) == 0) \
+! bf_e_cblock(&cfb_buffer[randbyte_offset]); \
+! t = cfb_buffer[randbyte_offset]; \
+! if (++randbyte_offset == BF_CFB_LEN) \
+ randbyte_offset = 0; \
+ }
+
+***************
+*** 610,616 ****
+ {
+ ztemp = from[i];
+ BF_RANBYTE(t);
+! BF_OFB_UPDATE(ztemp);
+ to[i] = t ^ ztemp;
+ }
+ }
+--- 610,616 ----
+ {
+ ztemp = from[i];
+ BF_RANBYTE(t);
+! BF_CFB_UPDATE(ztemp);
+ to[i] = t ^ ztemp;
+ }
+ }
+***************
+*** 630,636 ****
+ {
+ BF_RANBYTE(t);
+ *p ^= t;
+! BF_OFB_UPDATE(*p);
+ }
+ }
+
+--- 630,636 ----
+ {
+ BF_RANBYTE(t);
+ *p ^= t;
+! BF_CFB_UPDATE(*p);
+ }
+ }
+
+***************
+*** 646,658 ****
+
+ for (p = passwd; *p != NUL; ++p)
+ {
+! BF_OFB_UPDATE(*p);
+ }
+ }
+
+ static int save_randbyte_offset;
+ static int save_update_offset;
+! static char_u save_ofb_buffer[BF_OFB_LEN];
+ static UINT32_T save_pax[18];
+ static UINT32_T save_sbx[4][256];
+
+--- 646,658 ----
+
+ for (p = passwd; *p != NUL; ++p)
+ {
+! BF_CFB_UPDATE(*p);
+ }
+ }
+
+ static int save_randbyte_offset;
+ static int save_update_offset;
+! static char_u save_cfb_buffer[BF_CFB_LEN];
+ static UINT32_T save_pax[18];
+ static UINT32_T save_sbx[4][256];
+
+***************
+*** 665,671 ****
+ {
+ save_randbyte_offset = randbyte_offset;
+ save_update_offset = update_offset;
+! mch_memmove(save_ofb_buffer, ofb_buffer, BF_OFB_LEN);
+ mch_memmove(save_pax, pax, 4 * 18);
+ mch_memmove(save_sbx, sbx, 4 * 4 * 256);
+ }
+--- 665,671 ----
+ {
+ save_randbyte_offset = randbyte_offset;
+ save_update_offset = update_offset;
+! mch_memmove(save_cfb_buffer, cfb_buffer, BF_CFB_LEN);
+ mch_memmove(save_pax, pax, 4 * 18);
+ mch_memmove(save_sbx, sbx, 4 * 4 * 256);
+ }
+***************
+*** 679,685 ****
+ {
+ randbyte_offset = save_randbyte_offset;
+ update_offset = save_update_offset;
+! mch_memmove(ofb_buffer, save_ofb_buffer, BF_OFB_LEN);
+ mch_memmove(pax, save_pax, 4 * 18);
+ mch_memmove(sbx, save_sbx, 4 * 4 * 256);
+ }
+--- 679,685 ----
+ {
+ randbyte_offset = save_randbyte_offset;
+ update_offset = save_update_offset;
+! mch_memmove(cfb_buffer, save_cfb_buffer, BF_CFB_LEN);
+ mch_memmove(pax, save_pax, 4 * 18);
+ mch_memmove(sbx, save_sbx, 4 * 4 * 256);
+ }
+*** ../vim-7.4.171/src/fileio.c 2013-11-28 18:53:47.000000000 +0100
+--- src/fileio.c 2014-02-11 15:16:57.546117649 +0100
+***************
+*** 2973,2979 ****
+ else
+ {
+ bf_key_init(cryptkey, ptr + CRYPT_MAGIC_LEN, salt_len);
+! bf_ofb_init(ptr + CRYPT_MAGIC_LEN + salt_len, seed_len);
+ }
+
+ /* Remove magic number from the text */
+--- 2973,2979 ----
+ else
+ {
+ bf_key_init(cryptkey, ptr + CRYPT_MAGIC_LEN, salt_len);
+! bf_cfb_init(ptr + CRYPT_MAGIC_LEN + salt_len, seed_len);
+ }
+
+ /* Remove magic number from the text */
+***************
+*** 3025,3031 ****
+ if (fread(buffer, salt_len + seed_len, 1, fp) != 1)
+ return FAIL;
+ bf_key_init(curbuf->b_p_key, buffer, salt_len);
+! bf_ofb_init(buffer + salt_len, seed_len);
+ }
+ return OK;
+ }
+--- 3025,3031 ----
+ if (fread(buffer, salt_len + seed_len, 1, fp) != 1)
+ return FAIL;
+ bf_key_init(curbuf->b_p_key, buffer, salt_len);
+! bf_cfb_init(buffer + salt_len, seed_len);
+ }
+ return OK;
+ }
+***************
+*** 3064,3070 ****
+ seed = salt + salt_len;
+ sha2_seed(salt, salt_len, seed, seed_len);
+ bf_key_init(buf->b_p_key, salt, salt_len);
+! bf_ofb_init(seed, seed_len);
+ }
+ }
+ *lenp = CRYPT_MAGIC_LEN + salt_len + seed_len;
+--- 3064,3070 ----
+ seed = salt + salt_len;
+ sha2_seed(salt, salt_len, seed, seed_len);
+ bf_key_init(buf->b_p_key, salt, salt_len);
+! bf_cfb_init(seed, seed_len);
+ }
+ }
+ *lenp = CRYPT_MAGIC_LEN + salt_len + seed_len;
+*** ../vim-7.4.171/src/proto/blowfish.pro 2013-08-10 13:37:06.000000000 +0200
+--- src/proto/blowfish.pro 2014-02-11 15:18:20.382118919 +0100
+***************
+*** 1,6 ****
+ /* blowfish.c */
+ void bf_key_init __ARGS((char_u *password, char_u *salt, int salt_len));
+! void bf_ofb_init __ARGS((char_u *iv, int iv_len));
+ void bf_crypt_encode __ARGS((char_u *from, size_t len, char_u *to));
+ void bf_crypt_decode __ARGS((char_u *ptr, long len));
+ void bf_crypt_init_keys __ARGS((char_u *passwd));
+--- 1,6 ----
+ /* blowfish.c */
+ void bf_key_init __ARGS((char_u *password, char_u *salt, int salt_len));
+! void bf_cfb_init __ARGS((char_u *iv, int iv_len));
+ void bf_crypt_encode __ARGS((char_u *from, size_t len, char_u *to));
+ void bf_crypt_decode __ARGS((char_u *ptr, long len));
+ void bf_crypt_init_keys __ARGS((char_u *passwd));
+*** ../vim-7.4.171/src/memline.c 2013-11-28 17:41:41.000000000 +0100
+--- src/memline.c 2014-02-11 15:17:02.190117720 +0100
+***************
+*** 4914,4920 ****
+ * block for the salt. */
+ vim_snprintf((char *)salt, sizeof(salt), "%ld", (long)offset);
+ bf_key_init(key, salt, (int)STRLEN(salt));
+! bf_ofb_init(seed, MF_SEED_LEN);
+ }
+ }
+
+--- 4914,4920 ----
+ * block for the salt. */
+ vim_snprintf((char *)salt, sizeof(salt), "%ld", (long)offset);
+ bf_key_init(key, salt, (int)STRLEN(salt));
+! bf_cfb_init(seed, MF_SEED_LEN);
+ }
+ }
+
+*** ../vim-7.4.171/src/version.c 2014-02-11 15:10:38.138111836 +0100
+--- src/version.c 2014-02-11 15:16:01.206116786 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 172,
+ /**/
+
+--
+GALAHAD: No look, really, this isn't nescess ...
+PIGLET: We must examine you.
+GALAHAD: There's nothing wrong with ... that.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///