Hello, On Fri, Oct 10, 2014 at 11:03 PM, Christian Boltz <[email protected]> wrote: > Hello, > > the following patch changes open_file_read() and open_file_write() to > use errors='surrogateescape' (with fallback to 'replace' for py2). > > This avoids a crash when reading a logfile with special characters that > are not utf8-encoded (for example a latin1 "ö"), and also avoids crashes > at several other places we don't know yet ;-) >
This has been a long-standing problem, thanks for looking it up. > > === modified file 'utils/apparmor/common.py' > --- utils/apparmor/common.py 2014-02-28 22:31:16 +0000 > +++ utils/apparmor/common.py 2014-10-10 17:31:39 +0000 > @@ -168,8 +168,13 @@ > > def open_file_read(path, encoding='UTF-8'): > '''Open specified file read-only''' > + > + errorhandling = 'surrogateescape' > + if sys.version_info[0] < 3: > + errorhandling = 'replace' > + > try: > - orig = codecs.open(path, 'r', encoding) > + orig = codecs.open(path, 'r', encoding, errors=errorhandling) > except Exception: > raise > > @@ -177,8 +182,13 @@ > > def open_file_write(path): > '''Open specified file in write/overwrite mode''' > + > + errorhandling = 'surrogateescape' > + if sys.version_info[0] < 3: > + errorhandling = 'replace' > + I think we can move this redundant version check part to module level instead of function level. > try: > - orig = codecs.open(path, 'w', 'UTF-8') > + orig = codecs.open(path, 'w', 'UTF-8', errors=errorhandling) > except Exception: > raise > return orig > > Thanks for the patch. With the suggested change. Acked-by: Kshitij Gupta <[email protected]>. Regards, Kshitij Gupta > > Regards, > > Christian Boltz > -- > Auch ich rate von Sandpapier dringend ab! Ein Fehler, der, besonders von > Anfängern, immer wieder gemacht wird! Ein Spritzer Pril auf 1/2 Tasse > Java Kaffee und damit spülen - das ist IMO wesentlich schonender. > [Olaf Andersen erklärt das Putzen einer Festplatte in suse-linux] > > > -- > AppArmor mailing list > [email protected] > Modify settings or unsubscribe at: > https://lists.ubuntu.com/mailman/listinfo/apparmor -- AppArmor mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor
