Revision: 12850
          http://sourceforge.net/p/skim-app/code/12850
Author:   hofman
Date:     2022-04-20 21:40:06 +0000 (Wed, 20 Apr 2022)
Log Message:
-----------
Check plist type marker in skim notes data before either unarchive or 
deserialize, it should be an array for plist and a dictionary for archived data.

Modified Paths:
--------------
    trunk/SkimNotes/SKNUtilities.m

Modified: trunk/SkimNotes/SKNUtilities.m
===================================================================
--- trunk/SkimNotes/SKNUtilities.m      2022-04-20 09:14:58 UTC (rev 12849)
+++ trunk/SkimNotes/SKNUtilities.m      2022-04-20 21:40:06 UTC (rev 12850)
@@ -199,10 +199,14 @@
 NSArray *SKNSkimNotesFromData(NSData *data) {
     NSArray *noteDicts = nil;
     
-    if ([data length]) {
-        @try { noteDicts = [NSKeyedUnarchiver unarchiveObjectWithData:data]; }
-        @catch (id e) {}
-        if (noteDicts == nil) {
+    if ([data length] > 8) {
+        unsigned char ch = 0;
+        [data getBytes:&ch range:NSMakeRange(8, 1)];
+        ch = ch >> 4;
+        if (ch == 0xD) {
+            @try { noteDicts = [NSKeyedUnarchiver 
unarchiveObjectWithData:data]; }
+            @catch (id e) {}
+        } else if (ch == 0xA) {
             noteDicts = [NSPropertyListSerialization propertyListFromData:data 
mutabilityOption:NSPropertyListMutableContainers format:NULL 
errorDescription:NULL];
             if ([noteDicts isKindOfClass:[NSArray class]]) {
                 for (NSMutableDictionary *dict in noteDicts) {

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to