Revision: 29857
          http://sourceforge.net/p/bibdesk/svn/29857
Author:   hofman
Date:     2025-11-20 09:46:45 +0000 (Thu, 20 Nov 2025)
Log Message:
-----------
use secure coding for token classes

Modified Paths:
--------------
    trunk/bibdesk/BDSKTemplateDocument.m
    trunk/bibdesk/BDSKToken.h
    trunk/bibdesk/BDSKToken.m

Modified: trunk/bibdesk/BDSKTemplateDocument.m
===================================================================
--- trunk/bibdesk/BDSKTemplateDocument.m        2025-11-20 09:42:41 UTC (rev 
29856)
+++ trunk/bibdesk/BDSKTemplateDocument.m        2025-11-20 09:46:45 UTC (rev 
29857)
@@ -981,7 +981,7 @@
     for (id object in objects)
         [str appendString:[self tokenField:tokenField 
displayStringForRepresentedObject:object]];
     
-    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:objects 
requiringSecureCoding:NO error:NULL];
+    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:objects 
requiringSecureCoding:YES error:NULL];
     
     NSPasteboardItem *item = [[NSPasteboardItem alloc] init];
     [item setData:data forType:BDSKPasteboardTypeTemplateTokens];
@@ -994,13 +994,9 @@
 
 - (NSArray *)tokenField:(NSTokenField *)tokenField 
readFromPasteboard:(NSPasteboard *)pboard {
     if (tokenField == itemTemplateTokenField) {
-        if ([pboard 
availableTypeFromArray:@[BDSKPasteboardTypeTemplateTokens]]) {
-            NSData *data = [pboard 
dataForType:BDSKPasteboardTypeTemplateTokens];
-            NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] 
initForReadingFromData:data error:NULL];
-            [unarchiver setRequiresSecureCoding:NO];
-            NSArray *tokens = [unarchiver 
decodeObjectForKey:NSKeyedArchiveRootObjectKey];
-            [unarchiver finishDecoding];
-            return tokens;
+        NSData *data = [pboard dataForType:BDSKPasteboardTypeTemplateTokens];
+        if (data) {
+            return [NSKeyedUnarchiver unarchivedObjectOfClasses:[NSSet 
setWithObjects:[NSArray class], [BDSKToken class], [NSString class], nil] 
fromData:data error:NULL];
         } else {
             NSArray *strings = [pboard readObjectsForClasses:@[[NSString 
class]] options:@{}];
             if ([strings count] > 0)

Modified: trunk/bibdesk/BDSKToken.h
===================================================================
--- trunk/bibdesk/BDSKToken.h   2025-11-20 09:42:41 UTC (rev 29856)
+++ trunk/bibdesk/BDSKToken.h   2025-11-20 09:46:45 UTC (rev 29857)
@@ -52,7 +52,7 @@
 
 extern NSString * const BDSKRichTextString;
 
-@interface BDSKToken : NSObject <NSCopying, NSCoding> {
+@interface BDSKToken : NSObject <NSCopying, NSSecureCoding> {
     NSString *title;
     BOOL inRepository;
     NSString *fontName;

Modified: trunk/bibdesk/BDSKToken.m
===================================================================
--- trunk/bibdesk/BDSKToken.m   2025-11-20 09:42:41 UTC (rev 29856)
+++ trunk/bibdesk/BDSKToken.m   2025-11-20 09:46:45 UTC (rev 29857)
@@ -132,8 +132,8 @@
 - (instancetype)initWithCoder:(NSCoder *)decoder {
     self = [super init];
     if (self) {
-        title = [decoder decodeObjectForKey:TITLE_KEY];
-        fontName = [decoder decodeObjectForKey:FONTNAME_KEY];
+        title = [decoder decodeObjectOfClass:[NSString class] 
forKey:TITLE_KEY];
+        fontName = [decoder decodeObjectOfClass:[NSString class] 
forKey:FONTNAME_KEY];
         fontSize = [decoder decodeDoubleForKey:FONTSIZE_KEY];
         bold = [decoder decodeIntegerForKey:BOLD_KEY];
         italic = [decoder decodeIntegerForKey:ITALIC_KEY];
@@ -142,6 +142,8 @@
     return self;
 }
 
++ (BOOL)supportsSecureCoding { return YES; }
+
 - (void)encodeWithCoder:(NSCoder *)encoder {
     [encoder encodeObject:title forKey:TITLE_KEY];
     [encoder encodeObject:fontName forKey:FONTNAME_KEY];
@@ -248,11 +250,13 @@
 - (instancetype)initWithCoder:(NSCoder *)decoder {
     self = [super initWithCoder:decoder];
     if (self) {
-        key = [decoder decodeObjectForKey:KEY_KEY];
+        key = [decoder decodeObjectOfClass:[NSString class] forKey:KEY_KEY];
     }
     return self;
 }
 
++ (BOOL)supportsSecureCoding { return YES; }
+
 - (void)encodeWithCoder:(NSCoder *)encoder {
     [super encodeWithCoder:encoder];
     [encoder encodeObject:key forKey:KEY_KEY];
@@ -317,13 +321,15 @@
 - (instancetype)initWithCoder:(NSCoder *)decoder {
     self = [super initWithCoder:decoder];
     if (self) {
-        appendingKey = [decoder decodeObjectForKey:APPENDINGKEY_KEY];
-        prefix = [decoder decodeObjectForKey:PREFIX_KEY];
-        suffix = [decoder decodeObjectForKey:SUFFIX_KEY];
+        appendingKey = [decoder decodeObjectOfClass:[NSString class] 
forKey:APPENDINGKEY_KEY];
+        prefix = [decoder decodeObjectOfClass:[NSString class] 
forKey:PREFIX_KEY];
+        suffix = [decoder decodeObjectOfClass:[NSString class] 
forKey:SUFFIX_KEY];
     }
     return self;
 }
 
++ (BOOL)supportsSecureCoding { return YES; }
+
 - (void)encodeWithCoder:(NSCoder *)encoder {
     [super encodeWithCoder:encoder];
     [encoder encodeObject:appendingKey forKey:APPENDINGKEY_KEY];
@@ -422,12 +428,14 @@
 - (instancetype)initWithCoder:(NSCoder *)decoder {
     self = [super initWithCoder:decoder];
     if (self) {
-        casingKey = [decoder decodeObjectForKey:CASINGKEY_KEY];
-        cleaningKey = [decoder decodeObjectForKey:CLEANINGKEY_KEY];
+        casingKey = [decoder decodeObjectOfClass:[NSString class] 
forKey:CASINGKEY_KEY];
+        cleaningKey = [decoder decodeObjectOfClass:[NSString class] 
forKey:CLEANINGKEY_KEY];
     }
     return self;
 }
 
++ (BOOL)supportsSecureCoding { return YES; }
+
 - (void)encodeWithCoder:(NSCoder *)encoder {
     [super encodeWithCoder:encoder];
     [encoder encodeObject:casingKey forKey:CASINGKEY_KEY];
@@ -528,11 +536,13 @@
 - (instancetype)initWithCoder:(NSCoder *)decoder {
     self = [super initWithCoder:decoder];
     if (self) {
-        urlFormatKey = [decoder decodeObjectForKey:URLFORMATKEY_KEY];
+        urlFormatKey = [decoder decodeObjectOfClass:[NSString class] 
forKey:URLFORMATKEY_KEY];
     }
     return self;
 }
 
++ (BOOL)supportsSecureCoding { return YES; }
+
 - (void)encodeWithCoder:(NSCoder *)encoder {
     [super encodeWithCoder:encoder];
     [encoder encodeObject:urlFormatKey forKey:URLFORMATKEY_KEY];
@@ -609,12 +619,14 @@
 - (instancetype)initWithCoder:(NSCoder *)decoder {
     self = [super initWithCoder:decoder];
     if (self) {
-        nameStyleKey = [decoder decodeObjectForKey:NAMESTYLEKEY_KEY];
-        joinStyleKey = [decoder decodeObjectForKey:JOINSTYLEKEY_KEY];
+        nameStyleKey = [decoder decodeObjectOfClass:[NSString class] 
forKey:NAMESTYLEKEY_KEY];
+        joinStyleKey = [decoder decodeObjectOfClass:[NSString class] 
forKey:JOINSTYLEKEY_KEY];
     }
     return self;
 }
 
++ (BOOL)supportsSecureCoding { return YES; }
+
 - (void)encodeWithCoder:(NSCoder *)encoder {
     [super encodeWithCoder:encoder];
     [encoder encodeObject:nameStyleKey forKey:NAMESTYLEKEY_KEY];
@@ -697,12 +709,14 @@
 - (instancetype)initWithCoder:(NSCoder *)decoder {
     self = [super initWithCoder:decoder];
     if (self) {
-        linkedFileFormatKey = [decoder 
decodeObjectForKey:LINKEDFILEFORMATKEY_KEY];
-        linkedFileJoinStyleKey = [decoder 
decodeObjectForKey:LINKEDFILEJOINSTYLEKEY_KEY];
+        linkedFileFormatKey = [decoder decodeObjectOfClass:[NSString class] 
forKey:LINKEDFILEFORMATKEY_KEY];
+        linkedFileJoinStyleKey = [decoder decodeObjectOfClass:[NSString class] 
forKey:LINKEDFILEJOINSTYLEKEY_KEY];
     }
     return self;
 }
 
++ (BOOL)supportsSecureCoding { return YES; }
+
 - (void)encodeWithCoder:(NSCoder *)encoder {
     [super encodeWithCoder:encoder];
     [encoder encodeObject:linkedFileFormatKey forKey:LINKEDFILEFORMATKEY_KEY];
@@ -781,11 +795,13 @@
 - (instancetype)initWithCoder:(NSCoder *)decoder {
     self = [super initWithCoder:decoder];
     if (self) {
-        dateFormatKey = [decoder decodeObjectForKey:DATEFORMATKEY_KEY];
+        dateFormatKey = [decoder decodeObjectOfClass:[NSString class] 
forKey:DATEFORMATKEY_KEY];
     }
     return self;
 }
 
++ (BOOL)supportsSecureCoding { return YES; }
+
 - (void)encodeWithCoder:(NSCoder *)encoder {
     [super encodeWithCoder:encoder];
     [encoder encodeObject:dateFormatKey forKey:DATEFORMATKEY_KEY];
@@ -862,12 +878,14 @@
 - (instancetype)initWithCoder:(NSCoder *)decoder {
     self = [super initWithCoder:decoder];
     if (self) {
-        counterStyleKey = [decoder decodeObjectForKey:COUNTERSTYLEKEY_KEY];
-        counterCasingKey = [decoder decodeObjectForKey:COUNTERCASINGKEY_KEY];
+        counterStyleKey = [decoder decodeObjectOfClass:[NSString class] 
forKey:COUNTERSTYLEKEY_KEY];
+        counterCasingKey = [decoder decodeObjectOfClass:[NSString class] 
forKey:COUNTERCASINGKEY_KEY];
     }
     return self;
 }
 
++ (BOOL)supportsSecureCoding { return YES; }
+
 - (void)encodeWithCoder:(NSCoder *)encoder {
     [super encodeWithCoder:encoder];
     [encoder encodeObject:counterStyleKey forKey:COUNTERSTYLEKEY_KEY];
@@ -957,12 +975,14 @@
 - (instancetype)initWithCoder:(NSCoder *)decoder {
     self = [super initWithCoder:decoder];
     if (self) {
-        field = [decoder decodeObjectForKey:FIELD_KEY];
-        altText = [decoder decodeObjectForKey:ALTTEXT_KEY];
+        field = [decoder decodeObjectOfClass:[NSString class] 
forKey:FIELD_KEY];
+        altText = [decoder decodeObjectOfClass:[NSString class] 
forKey:ALTTEXT_KEY];
     }
     return self;
 }
 
++ (BOOL)supportsSecureCoding { return YES; }
+
 - (void)encodeWithCoder:(NSCoder *)encoder {
     [super encodeWithCoder:encoder];
     [encoder encodeObject:field forKey:FIELD_KEY];

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



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to