summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2014-11-12 15:15:42 +0100
committerBram Moolenaar <Bram@vim.org>2014-11-12 15:15:42 +0100
commit3a0c90898338c04bde314bede9f116f299eaddef (patch)
tree52c90925ed68b802fd1e0a4e943876a53532acf0
parent983c4e93dc560b00c5c7b752a3a7c1c452359c38 (diff)
updated for version 7.4.509v7.4.509
Problem: Users are not aware their encryption is weak. Solution: Give a warning when prompting for the key.
-rw-r--r--src/crypt.c20
-rw-r--r--src/ex_docmd.c1
-rw-r--r--src/fileio.c1
-rw-r--r--src/main.c1
-rw-r--r--src/proto/crypt.pro2
-rw-r--r--src/version.c2
6 files changed, 27 insertions, 0 deletions
diff --git a/src/crypt.c b/src/crypt.c
index c54e15c4af..f25a2c4a9d 100644
--- a/src/crypt.c
+++ b/src/crypt.c
@@ -504,6 +504,26 @@ crypt_free_key(key)
}
/*
+ * Check the crypt method and give a warning if it's outdated.
+ */
+ void
+crypt_check_method(method)
+ int method;
+{
+ if (method < CRYPT_M_BF2)
+ {
+ msg_scroll = TRUE;
+ MSG(_("Warning: Using a weak encryption method; see :help 'cm'"));
+ }
+}
+
+ void
+crypt_check_current_method()
+{
+ crypt_check_method(crypt_get_method_nr(curbuf));
+}
+
+/*
* Ask the user for a crypt key.
* When "store" is TRUE, the new key is stored in the 'key' option, and the
* 'key' option value is returned: Don't free it.
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 35e44f0f3c..e90a36ecc6 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -11524,6 +11524,7 @@ ex_match(eap)
ex_X(eap)
exarg_T *eap UNUSED;
{
+ crypt_check_current_method();
(void)crypt_get_key(TRUE, TRUE);
}
#endif
diff --git a/src/fileio.c b/src/fileio.c
index 0843d04296..a978ec241d 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2958,6 +2958,7 @@ check_for_cryptkey(cryptkey, ptr, sizep, filesizep, newfile, fname, did_ask)
* Happens when retrying to detect encoding. */
smsg((char_u *)_(need_key_msg), fname);
msg_scroll = TRUE;
+ crypt_check_method(method);
cryptkey = crypt_get_key(newfile, FALSE);
*did_ask = TRUE;
diff --git a/src/main.c b/src/main.c
index fe75495828..1814385197 100644
--- a/src/main.c
+++ b/src/main.c
@@ -854,6 +854,7 @@ vim_main2(int argc UNUSED, char **argv UNUSED)
#ifdef FEAT_CRYPT
if (params.ask_for_key)
{
+ crypt_check_current_method();
(void)crypt_get_key(TRUE, TRUE);
TIME_MSG("getting crypt key");
}
diff --git a/src/proto/crypt.pro b/src/proto/crypt.pro
index d61df718bd..7b29026a1d 100644
--- a/src/proto/crypt.pro
+++ b/src/proto/crypt.pro
@@ -19,6 +19,8 @@ void crypt_decode __ARGS((cryptstate_T *state, char_u *from, size_t len, char_u
void crypt_encode_inplace __ARGS((cryptstate_T *state, char_u *buf, size_t len));
void crypt_decode_inplace __ARGS((cryptstate_T *state, char_u *buf, size_t len));
void crypt_free_key __ARGS((char_u *key));
+void crypt_check_method __ARGS((int method));
+void crypt_check_current_method __ARGS((void));
char_u *crypt_get_key __ARGS((int store, int twice));
void crypt_append_msg __ARGS((buf_T *buf));
/* vim: set ft=c : */
diff --git a/src/version.c b/src/version.c
index 76ab14690d..06c4016bec 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 509,
+/**/
508,
/**/
507,