]> granicus.if.org Git - python/commitdiff
Merged revisions 85774 via svnmerge from
authorBrian Curtin <brian.curtin@gmail.com>
Thu, 21 Oct 2010 14:48:22 +0000 (14:48 +0000)
committerBrian Curtin <brian.curtin@gmail.com>
Thu, 21 Oct 2010 14:48:22 +0000 (14:48 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r85774 | brian.curtin | 2010-10-21 09:11:48 -0500 (Thu, 21 Oct 2010) | 7 lines

  Fix #10162: Add try/except around _winreg.OpenKey for keys that are
  unreadable by all users, e.g., Flash, Silverlight, and Java keys were
  causing errors.

  We don't currently have a way to grant/deny permissions for a key
  via winreg so there are no tests for this.
........

Lib/mimetypes.py
Misc/NEWS

index 816f6cdcde7603dda6855f877fb01c2c0ae8cf80..4c054c961cd71550d8f299b9a01b806e8e4e434c 100644 (file)
@@ -257,18 +257,19 @@ class MimeTypes:
         with _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT,
                              r'MIME\Database\Content Type') as mimedb:
             for ctype in enum_types(mimedb):
-                with _winreg.OpenKey(mimedb, ctype) as key:
-                    try:
-                        suffix, datatype = _winreg.QueryValueEx(key, 'Extension')
-                    except EnvironmentError:
-                        continue
-                    if datatype != _winreg.REG_SZ:
-                        continue
-                    try:
-                        suffix = suffix.encode(default_encoding) # omit in 3.x!
-                    except UnicodeEncodeError:
-                        continue
-                    self.add_type(ctype, suffix, strict)
+                try:
+                    with _winreg.OpenKey(mimedb, ctype) as key:
+                        suffix, datatype = _winreg.QueryValueEx(key,
+                                                                'Extension')
+                except EnvironmentError:
+                    continue
+                if datatype != _winreg.REG_SZ:
+                    continue
+                try:
+                    suffix = suffix.encode(default_encoding) # omit in 3.x!
+                except UnicodeEncodeError:
+                    continue
+                self.add_type(ctype, suffix, strict)
 
 
 def guess_type(url, strict=True):
index f25664a67c833442692164e99e49fcd7372beefd..d25e25ec2f949a73818e37cf6c378c63dcd1096e 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -60,6 +60,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #10163: Skip unreadable registry keys during mimetypes
+  initialization.
+
 - Issue #5117: Fixed root directory related issue on posixpath.relpath() and
   ntpath.relpath().