diff --git a/Lib/test/test_dict.py b/Lib/test/test_dict.py
index b518a0b..403d5eb 100644
--- a/Lib/test/test_dict.py
+++ b/Lib/test/test_dict.py
@@ -638,6 +638,17 @@
         resizing = True
         d[9] = 6
 
+    def test_empty_presized_dict_in_freelist(self):
+        # Bug #3537: if an empty but presized dict with a size larger
+        # than 7 was in the freelist, it triggered an assertion failure
+        try:
+            d = {'a': 1/0,  'b': None, 'c': None, 'd': None, 'e': None,
+                 'f': None, 'g': None, 'h': None}
+        except ZeroDivisionError:
+            pass
+        d = {}
+
+
 
 from test import mapping_tests
 
diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py
index c475878..dc04bad 100644
--- a/Lib/test/test_long.py
+++ b/Lib/test/test_long.py
@@ -768,7 +768,8 @@
 
     def test_nan_inf(self):
         self.assertRaises(OverflowError, int, float('inf'))
-        self.assertRaises(OverflowError, int, float('nan'))
+        self.assertRaises(OverflowError, int, float('-inf'))
+        self.assertRaises(ValueError, int, float('nan'))
 
     def test_true_division(self):
         huge = 1 << 40000
diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py
index 783323f..1828381 100644
--- a/Lib/test/test_mailbox.py
+++ b/Lib/test/test_mailbox.py
@@ -709,6 +709,38 @@
         for msg in self._box:
             pass
 
+    def test_file_permissions(self):
+        # Verify that message files are created without execute permissions
+        if not hasattr(os, "stat") or not hasattr(os, "umask"):
+            return
+        msg = mailbox.MaildirMessage(self._template % 0)
+        orig_umask = os.umask(0)
+        try:
+            key = self._box.add(msg)
+        finally:
+            os.umask(orig_umask)
+        path = os.path.join(self._path, self._box._lookup(key))
+        mode = os.stat(path).st_mode
+        self.assert_(mode & 0o111 == 0)
+
+    def test_folder_file_perms(self):
+        # From bug #3228, we want to verify that the file created inside a Maildir
+        # subfolder isn't marked as executable.
+        if not hasattr(os, "stat") or not hasattr(os, "umask"):
+            return
+
+        orig_umask = os.umask(0)
+        try:
+            subfolder = self._box.add_folder('subfolder')
+        finally:
+            os.umask(orig_umask)
+
+        path = os.path.join(subfolder._path, 'maildirfolder')
+        st = os.stat(path)
+        perms = st.st_mode
+        self.assertFalse((perms & 0o111)) # Execute bits should all be off.
+
+
 class _TestMboxMMDF(TestMailbox):
 
     def tearDown(self):
@@ -800,11 +832,28 @@
         self._box.close()
 
 
-
 class TestMbox(_TestMboxMMDF):
 
     _factory = lambda self, path, factory=None: mailbox.mbox(path, factory)
 
+    def test_file_perms(self):
+        # From bug #3228, we want to verify that the mailbox file isn't executable,
+        # even if the umask is set to something that would leave executable bits set.
+        # We only run this test on platforms that support umask.
+        if hasattr(os, 'umask') and hasattr(os, 'stat'):
+            try:
+                old_umask = os.umask(0o077)
+                self._box.close()
+                os.unlink(self._path)
+                self._box = mailbox.mbox(self._path, create=True)
+                self._box.add('')
+                self._box.close()
+            finally:
+                os.umask(old_umask)
+
+            st = os.stat(self._path)
+            perms = st.st_mode
+            self.assertFalse((perms & 0o111)) # Execute bits should all be off.
 
 class TestMMDF(_TestMboxMMDF):
 
