]> git.wh0rd.org Git - nano.git/commitdiff
Preventing valid pointers from getting truncated and rejected.
authorBenno Schulenberg <bensberg@justemail.net>
Wed, 23 Dec 2015 14:05:47 +0000 (14:05 +0000)
committerBenno Schulenberg <bensberg@justemail.net>
Wed, 23 Dec 2015 14:05:47 +0000 (14:05 +0000)
Patch by Mike Frysinger, tweaked by Benno.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5508 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/nano.c

index f96380bfb8389c46d5a44c9aad9e5f884b7c5781..d006b8c5797b45b7f14519487377c6fa28bd3860 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,9 @@
        * src/files.c (save_history, save_poshistory): Don't make the user
        hit Enter when there's an error saving history state at exit; it is
        pointless and annoying.  Just notify the user and move on.
+       * src/nano.c (main): On most 64-bit systems, casting a pointer to
+       an integer can cause valid pointers to be truncated and rejected.
+       Rework the code to test for the two invalid values directly.
 
 2015-12-23  Christian Weisgerber  <naddy@mips.inka.de>
        * configure.ac: AC_CHECK_HEADERS_ONCE() is very special and cannot be
index 1af88dc9cffa6cba7578273953bf973dac09f981..0780ebcdf4baded01fe444f53cdc749cd6bfe9e6 100644 (file)
@@ -2574,11 +2574,14 @@ int main(int argc, char **argv)
 #endif
 
 #if !defined(NANO_TINY) && defined(HAVE_KEY_DEFINED)
+    const char *keyvalue;
     /* Ask ncurses for the key codes for Control+Left and Control+Right. */
-    if ((int)tigetstr("kLFT5") > 0)
-       controlleft = key_defined(tigetstr("kLFT5"));
-    if ((int)tigetstr("kRIT5") > 0)
-       controlright = key_defined(tigetstr("kRIT5"));
+    keyvalue = tigetstr("kLFT5");
+    if (keyvalue != 0 && keyvalue != (char *)-1)
+       controlleft = key_defined(keyvalue);
+    keyvalue = tigetstr("kRIT5");
+    if (keyvalue != 0 && keyvalue != (char *)-1)
+       controlright = key_defined(keyvalue);
 #endif
 
 #ifdef DEBUG