Revision: 29784
http://sourceforge.net/p/bibdesk/svn/29784
Author: hofman
Date: 2025-11-12 17:43:31 +0000 (Wed, 12 Nov 2025)
Log Message:
-----------
upgrade NSCoding to NSSecureCoding
Modified Paths:
--------------
trunk/bibdesk/BDSKAddressTextField.m
trunk/bibdesk/BDSKCategoryGroup.m
trunk/bibdesk/BDSKColorLabelWell.m
trunk/bibdesk/BDSKComplexString.m
trunk/bibdesk/BDSKCondition.h
trunk/bibdesk/BDSKCondition.m
trunk/bibdesk/BDSKEdgeView.m
trunk/bibdesk/BDSKEditorTextField.m
trunk/bibdesk/BDSKFileSearchIndex.m
trunk/bibdesk/BDSKFilter.h
trunk/bibdesk/BDSKFilter.m
trunk/bibdesk/BDSKFontWell.m
trunk/bibdesk/BDSKGroup.h
trunk/bibdesk/BDSKGroup.m
trunk/bibdesk/BDSKImagePopUpButtonCell.m
trunk/bibdesk/BDSKLinkedFile.h
trunk/bibdesk/BDSKLinkedFile.m
trunk/bibdesk/BDSKParentGroup.m
trunk/bibdesk/BDSKScriptGroup.m
trunk/bibdesk/BDSKSearchGroup.m
trunk/bibdesk/BDSKSecureTextField.m
trunk/bibdesk/BDSKServerInfo.h
trunk/bibdesk/BDSKServerInfo.m
trunk/bibdesk/BDSKSmartGroup.m
trunk/bibdesk/BDSKStaticGroup.m
trunk/bibdesk/BDSKStringNode.h
trunk/bibdesk/BDSKStringNode.m
trunk/bibdesk/BDSKToken.h
trunk/bibdesk/BDSKToken.m
trunk/bibdesk/BDSKTreeNode.h
trunk/bibdesk/BDSKTreeNode.m
trunk/bibdesk/BDSKURLGroup.m
trunk/bibdesk/BibAuthor.h
trunk/bibdesk/BibAuthor.m
trunk/bibdesk/BibItem.h
trunk/bibdesk/BibItem.m
Modified: trunk/bibdesk/BDSKAddressTextField.m
===================================================================
--- trunk/bibdesk/BDSKAddressTextField.m 2025-11-12 16:48:42 UTC (rev
29783)
+++ trunk/bibdesk/BDSKAddressTextField.m 2025-11-12 17:43:31 UTC (rev
29784)
@@ -123,8 +123,8 @@
[self setCell:myCell];
}
- imageView = [aDecoder decodeObjectForKey:@"imageView"];
- button = [aDecoder decodeObjectForKey:@"button"];
+ imageView = [aDecoder decodeObjectOfClass:[NSImageView class]
forKey:@"imageView"];
+ button = [aDecoder decodeObjectOfClass:[NSButton class]
forKey:@"button"];
[self commonInit];
}
return self;
Modified: trunk/bibdesk/BDSKCategoryGroup.m
===================================================================
--- trunk/bibdesk/BDSKCategoryGroup.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKCategoryGroup.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -84,7 +84,7 @@
- (instancetype)initWithCoder:(NSCoder *)decoder {
self = [super initWithCoder:decoder];
if (self) {
- key = [decoder decodeObjectForKey:@"key"];
+ key = [decoder decodeObjectOfClass:[NSString class] forKey:@"key"];
}
return self;
}
Modified: trunk/bibdesk/BDSKColorLabelWell.m
===================================================================
--- trunk/bibdesk/BDSKColorLabelWell.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKColorLabelWell.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -115,14 +115,14 @@
if (self) {
NSMutableArray *array = [NSMutableArray array];
for (NSUInteger i = 0; i < 9; i++) {
- NSButton *button = [coder decodeObjectForKey:[NSString
stringWithFormat:@"button%lu", i]];
+ NSButton *button = [coder decodeObjectOfClass:[NSButton class]
forKey:[NSString stringWithFormat:@"button%lu", i]];
if (button)
[array addObject:button];
}
buttons = [array copy];
suppressSelection = [coder decodeBoolForKey:@"suppressSelection"];
- titleCell = [coder decodeObjectForKey:@"titleCell"];
- labelCell = [coder decodeObjectForKey:@"labelCell"];
+ titleCell = [coder decodeObjectOfClass:[NSTextFieldCell class]
forKey:@"titleCell"];
+ labelCell = [coder decodeObjectOfClass:[NSTextFieldCell class]
forKey:@"labelCell"];
[self commonInit];
}
return self;
Modified: trunk/bibdesk/BDSKComplexString.m
===================================================================
--- trunk/bibdesk/BDSKComplexString.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKComplexString.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -367,7 +367,7 @@
self = [super init];
if (self) {
BDSKASSERT([coder isKindOfClass:[NSKeyedUnarchiver class]]);
- nodes = [coder decodeObjectForKey:@"nodes"];
+ nodes = [coder decodeObjectOfClass:[NSArray class]
forKey:@"nodes"];
isComplex = [coder decodeBoolForKey:@"complex"];
isInherited = [coder decodeBoolForKey:@"inherited"];
macroResolver = [[self class] macroResolverForUnarchiving];
Modified: trunk/bibdesk/BDSKCondition.h
===================================================================
--- trunk/bibdesk/BDSKCondition.h 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKCondition.h 2025-11-12 17:43:31 UTC (rev 29784)
@@ -97,7 +97,7 @@
@protocol BDSKSmartGroup;
@class BibItem, BibAuthor;
-@interface BDSKCondition : NSObject <NSCopying, NSCoding> {
+@interface BDSKCondition : NSObject <NSCopying, NSSecureCoding> {
NSString *key;
BDSKStringComparison stringComparison;
BDSKAttachmentComparison attachmentComparison;
Modified: trunk/bibdesk/BDSKCondition.m
===================================================================
--- trunk/bibdesk/BDSKCondition.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKCondition.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -139,7 +139,7 @@
- (instancetype)initWithCoder:(NSCoder *)decoder {
self = [super init];
if (self) {
- key = [decoder decodeObjectForKey:@"key"] ?: @"";
+ key = [decoder decodeObjectOfClass:[NSString class] forKey:@"key"] ?:
@"";
stringValue = @"";
stringComparison = BDSKContain;
attachmentComparison = BDSKCountNotEqual;
@@ -158,7 +158,7 @@
[self setComparison:[decoder
decodeIntegerForKey:@"comparison"]];
if ([self isDateCondition] || [self isAttachmentCondition])
[self setDefaultValue];
- [self setValue:[decoder decodeObjectForKey:@"value"]];
+ [self setValue:[decoder decodeObjectOfClass:[NSString class]
forKey:@"value"]];
BDSKASSERT([self value] != nil);
}
return self;
@@ -170,6 +170,8 @@
[coder encodeObject:[self value] forKey:@"value"];
}
++ (BOOL)supportsSecureCoding { return YES; }
+
- (void)dealloc {
//NSLog(@"dealloc condition");
[cacheTimer invalidate];
Modified: trunk/bibdesk/BDSKEdgeView.m
===================================================================
--- trunk/bibdesk/BDSKEdgeView.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKEdgeView.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -96,12 +96,12 @@
self = [super initWithCoder:decoder];
if (self) {
// this decodes only the reference, the actual view should already be
decoded as a subview
- contentView = [decoder decodeObjectForKey:@"contentView"];
+ contentView = [decoder decodeObjectOfClass:[NSView class]
forKey:@"contentView"];
wantsSubviews = NO;
- edgeColors = [[decoder decodeObjectForKey:@"edgeColors"]
mutableCopy];
+ edgeColors = [[decoder decodeObjectOfClass:[NSArray class]
forKey:@"edgeColors"] mutableCopy];
edges = [decoder decodeIntegerForKey:@"edges"];
- backgroundColors = [decoder decodeObjectForKey:@"backgroundColors"];
- backgroundView = [decoder decodeObjectForKey:@"backgroundView"];
+ backgroundColors = [decoder decodeObjectOfClass:[NSArray class]
forKey:@"backgroundColors"];
+ backgroundView = [decoder decodeObjectOfClass:[NSView class]
forKey:@"backgroundView"];
if (@available(macOS 10.14, *))
reflectViewEnabled = YES;
else
Modified: trunk/bibdesk/BDSKEditorTextField.m
===================================================================
--- trunk/bibdesk/BDSKEditorTextField.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKEditorTextField.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -73,8 +73,8 @@
[self setCell:myCell];
}
- button = [decoder decodeObjectForKey:@"button"];
- buttonAction = NSSelectorFromString([decoder
decodeObjectForKey:@"buttonAction"]);
+ button = [decoder decodeObjectOfClass:[NSButton class]
forKey:@"button"];
+ buttonAction = NSSelectorFromString([decoder
decodeObjectOfClass:[NSString class] forKey:@"buttonAction"]);
}
return self;
}
Modified: trunk/bibdesk/BDSKFileSearchIndex.m
===================================================================
--- trunk/bibdesk/BDSKFileSearchIndex.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKFileSearchIndex.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -191,7 +191,7 @@
#pragma mark Caching
-// this can return any object conforming to NSCoding
+// this can return any object conforming to NSSecureCoding
static inline id signatureForURL(NSURL *aURL) {
// Use the SHA1 signature if we can get it
id signature = [NSData sha1SignatureForFile:[aURL path]];
@@ -224,7 +224,7 @@
NSData *data = [NSData dataWithContentsOfURL:aURL
options:NSDataReadingMapped error:NULL];
if (data) {
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]
initForReadingWithData:data];
- isIndexCache = [[unarchiver decodeObjectForKey:@"documentURL"]
isEqual:documentURL];
+ isIndexCache = [[unarchiver decodeObjectOfClass:[NSURL class]
forKey:@"documentURL"] isEqual:documentURL];
[unarchiver finishDecoding];
}
return isIndexCache;
@@ -496,11 +496,11 @@
if (indexCacheURL) {
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]
initForReadingWithData:[NSData dataWithContentsOfURL:indexCacheURL]];
- indexData = [[unarchiver decodeObjectForKey:@"indexData"] mutableCopy];
+ indexData = [[unarchiver decodeObjectOfClass:[NSData class]
forKey:@"indexData"] mutableCopy];
if (indexData != NULL) {
tmpIndex = SKIndexOpenWithMutableData((__bridge
CFMutableDataRef)indexData, NULL);
if (tmpIndex) {
- [signatures setDictionary:[unarchiver
decodeObjectForKey:@"signatures"]];
+ [signatures setDictionary:[unarchiver
decodeObjectOfClass:[NSDictionary class] forKey:@"signatures"]];
} else {
indexData = nil;
}
Modified: trunk/bibdesk/BDSKFilter.h
===================================================================
--- trunk/bibdesk/BDSKFilter.h 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKFilter.h 2025-11-12 17:43:31 UTC (rev 29784)
@@ -48,7 +48,7 @@
@protocol BDSKSmartGroup;
@class BDSKCondition, BibItem;
-@interface BDSKFilter : NSObject <NSCopying, NSCoding> {
+@interface BDSKFilter : NSObject <NSCopying, NSSecureCoding> {
NSMutableArray *conditions;
BDSKConjunction conjunction;
__weak id<BDSKSmartGroup> group;
Modified: trunk/bibdesk/BDSKFilter.m
===================================================================
--- trunk/bibdesk/BDSKFilter.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKFilter.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -84,7 +84,7 @@
- (instancetype)initWithCoder:(NSCoder *)decoder {
self = [super init];
if (self) {
- conditions = [[NSMutableArray alloc] initWithArray:[decoder
decodeObjectForKey:@"conditions"]];
+ conditions = [[NSMutableArray alloc] initWithArray:[decoder
decodeObjectOfClass:[NSArray class] forKey:@"conditions"]];
conjunction = [decoder decodeIntegerForKey:@"conjunction"];
group = nil;
}
@@ -96,6 +96,8 @@
[coder encodeInteger:conjunction forKey:@"conjunction"];
}
++ (BOOL)supportsSecureCoding { return YES; }
+
- (void)dealloc {
if (group)
BDSKENSURE_MAIN_THREAD(
Modified: trunk/bibdesk/BDSKFontWell.m
===================================================================
--- trunk/bibdesk/BDSKFontWell.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKFontWell.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -100,8 +100,8 @@
[newCell setAction:[oldCell action]];
[self setCell:newCell];
}
- action = NSSelectorFromString([decoder decodeObjectForKey:ACTION_KEY]);
- target = [decoder decodeObjectForKey:TARGET_KEY];
+ action = NSSelectorFromString([decoder decodeObjectOfClass:[NSString
class] forKey:ACTION_KEY]);
+ target = [decoder decodeObjectOfClass:[NSObject class]
forKey:TARGET_KEY];
[self commonInit];
}
return self;
Modified: trunk/bibdesk/BDSKGroup.h
===================================================================
--- trunk/bibdesk/BDSKGroup.h 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKGroup.h 2025-11-12 17:43:31 UTC (rev 29784)
@@ -64,10 +64,10 @@
@class BibItem, BibDocument, BDSKMacroResolver, BDSKParentGroup;
-// NSCoding is used only to save the group selection of non-external groups
-// NSCoding support is presently limited, in particular it is not supported
for external groups
+// NSSecureCoding is used only to save the group selection of non-external
groups
+// NSSecureCoding support is presently limited, in particular it is not
supported for external groups
-@interface BDSKGroup : NSObject <NSCopying, NSCoding> {
+@interface BDSKGroup : NSObject <NSCopying, NSSecureCoding> {
id name;
NSInteger count;
__weak BDSKParentGroup *parent;
Modified: trunk/bibdesk/BDSKGroup.m
===================================================================
--- trunk/bibdesk/BDSKGroup.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKGroup.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -81,12 +81,12 @@
return [NSDictionary dictionaryWithObjectsAndKeys:aName, @"group name",
nil];
}
-// NSCoding protocol, used to remember group selection, but only for
non-external groups
+// NSSecureCoding protocol, used to remember group selection, but only for
non-external groups
- (instancetype)initWithCoder:(NSCoder *)decoder {
self = [super init];
if (self) {
- name = [decoder decodeObjectForKey:@"name"];
+ name = [decoder decodeObjectOfClass:[NSString class] forKey:@"name"];
count = [decoder decodeIntegerForKey:@"count"];
uniqueID = [NSString uniqueString];
}
@@ -98,6 +98,8 @@
[coder encodeInteger:count forKey:@"count"];
}
++ (BOOL)supportsSecureCoding { return YES; }
+
// NSCopying protocol, used by the duplicate action
- (id)copyWithZone:(NSZone *)aZone {
Modified: trunk/bibdesk/BDSKImagePopUpButtonCell.m
===================================================================
--- trunk/bibdesk/BDSKImagePopUpButtonCell.m 2025-11-12 16:48:42 UTC (rev
29783)
+++ trunk/bibdesk/BDSKImagePopUpButtonCell.m 2025-11-12 17:43:31 UTC (rev
29784)
@@ -67,7 +67,7 @@
- (instancetype)initWithCoder:(NSCoder *)coder{
self = [super initWithCoder:coder];
if (self) {
- buttonCell = [coder decodeObjectForKey:@"buttonCell"];
+ buttonCell = [coder decodeObjectOfClass:[NSButtonCell class]
forKey:@"buttonCell"];
[self setBordered:NO];
if (buttonCell == nil)
[self makeButtonCell];
Modified: trunk/bibdesk/BDSKLinkedFile.h
===================================================================
--- trunk/bibdesk/BDSKLinkedFile.h 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKLinkedFile.h 2025-11-12 17:43:31 UTC (rev 29784)
@@ -48,7 +48,7 @@
@end
-@interface BDSKLinkedFile : NSObject <NSCopying, NSCoding>
+@interface BDSKLinkedFile : NSObject <NSCopying, NSSecureCoding>
@property (nonatomic, nullable, readonly) NSURL *URL;
@property (nonatomic, readonly, getter=isFile) BOOL file;
Modified: trunk/bibdesk/BDSKLinkedFile.m
===================================================================
--- trunk/bibdesk/BDSKLinkedFile.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKLinkedFile.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -201,6 +201,8 @@
BDSKRequestConcreteImplementation(self, _cmd);
}
++ (BOOL)supportsSecureCoding { return YES; }
+
- (NSString *)description {
return [NSString stringWithFormat:@"<%@: URL=%@>", [self class], [self
URL]];
}
@@ -379,8 +381,8 @@
id anAlias = nil;
NSString *relPath = nil;
if ([coder allowsKeyedCoding]) {
- anAlias = [coder decodeObjectForKey:BOOKMARK_KEY] ?: [BDSKAlias
aliasWithData:[coder decodeObjectForKey:ALIASDATA_KEY]];
- relPath = [coder decodeObjectForKey:RELATIVEPATH_KEY];
+ anAlias = [coder decodeObjectOfClass:[NSData class]
forKey:BOOKMARK_KEY] ?: [BDSKAlias aliasWithData:[coder
decodeObjectOfClass:[NSData class] forKey:ALIASDATA_KEY]];
+ relPath = [coder decodeObjectOfClass:[NSString class]
forKey:RELATIVEPATH_KEY];
} else {
anAlias = [BDSKAlias aliasWithData:[coder decodeObject]];
relPath = [coder decodeObject];
@@ -1000,7 +1002,7 @@
self = [super init];
if (self) {
if ([coder allowsKeyedCoding]) {
- URL = [coder decodeObjectForKey:@"URL"];
+ URL = [coder decodeObjectOfClass:[NSURL class] forKey:@"URL"];
} else {
URL = [coder decodeObject];
}
Modified: trunk/bibdesk/BDSKParentGroup.m
===================================================================
--- trunk/bibdesk/BDSKParentGroup.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKParentGroup.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -342,7 +342,7 @@
- (instancetype)initWithCoder:(NSCoder *)decoder {
self = [super initWithCoder:decoder];
if (self) {
- key = [decoder decodeObjectForKey:@"key"];
+ key = [decoder decodeObjectOfClass:[NSString class] forKey:@"key"];
}
return self;
}
Modified: trunk/bibdesk/BDSKScriptGroup.m
===================================================================
--- trunk/bibdesk/BDSKScriptGroup.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKScriptGroup.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -135,8 +135,8 @@
- (instancetype)initWithCoder:(NSCoder *)decoder {
self = [super initWithCoder:decoder];
if (self) {
- scriptPath = [decoder decodeObjectForKey:@"scriptPath"];
- scriptArguments = [decoder decodeObjectForKey:@"scriptArguments"];
+ scriptPath = [decoder decodeObjectOfClass:[NSString class]
forKey:@"scriptPath"];
+ scriptArguments = [decoder decodeObjectOfClass:[NSString class]
forKey:@"scriptArguments"];
scriptType = [decoder decodeIntegerForKey:@"scriptType"];
[self commonInit];
}
Modified: trunk/bibdesk/BDSKSearchGroup.m
===================================================================
--- trunk/bibdesk/BDSKSearchGroup.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKSearchGroup.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -163,11 +163,11 @@
- (instancetype)initWithCoder:(NSCoder *)decoder {
self = [super initWithCoder:decoder];
if (self) {
- searchTerm = [decoder decodeObjectForKey:@"searchTerm"];
+ searchTerm = [decoder decodeObjectOfClass:[NSString class]
forKey:@"searchTerm"];
history = nil;
- server = [[self class] copyServerWithGroup:self serverInfo:[decoder
decodeObjectForKey:@"serverInfo"]];
+ server = [[self class] copyServerWithGroup:self serverInfo:[decoder
decodeObjectOfClass:[BDSKServerInfo class] forKey:@"serverInfo"]];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillTerminate:)
name:NSApplicationWillTerminateNotification object:nil];
}
Modified: trunk/bibdesk/BDSKSecureTextField.m
===================================================================
--- trunk/bibdesk/BDSKSecureTextField.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKSecureTextField.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -153,7 +153,7 @@
- (instancetype)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
- button = [coder decodeObjectForKey:@"button"];
+ button = [coder decodeObjectOfClass:[NSButton class] forKey:@"button"];
showsText = [coder decodeBoolForKey:@"showsText"];
Class cellClass = [self cellClass];
Modified: trunk/bibdesk/BDSKServerInfo.h
===================================================================
--- trunk/bibdesk/BDSKServerInfo.h 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKServerInfo.h 2025-11-12 17:43:31 UTC (rev 29784)
@@ -50,7 +50,7 @@
@class BDSKReadWriteLock;
-@interface BDSKServerInfo : NSObject <NSCopying, NSMutableCopying, NSCoding> {
+@interface BDSKServerInfo : NSObject <NSCopying, NSMutableCopying,
NSSecureCoding> {
NSString *type;
NSString *name;
NSString *database;
Modified: trunk/bibdesk/BDSKServerInfo.m
===================================================================
--- trunk/bibdesk/BDSKServerInfo.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKServerInfo.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -149,22 +149,22 @@
- (instancetype)initWithCoder:(NSCoder *)decoder {
self = [super init];
if (self) {
- type = [decoder decodeObjectForKey:TYPE_KEY];
- name = [decoder decodeObjectForKey:NAME_KEY];
- database = [decoder decodeObjectForKey:DATABASE_KEY];
+ type = [decoder decodeObjectOfClass:[NSString class] forKey:TYPE_KEY];
+ name = [decoder decodeObjectOfClass:[NSString class] forKey:NAME_KEY];
+ database = [decoder decodeObjectOfClass:[NSString class]
forKey:DATABASE_KEY];
passwordInKeychain = NO;
if ([self isEntrez] || [self isISI] || [self isDBLP]) {
host = nil;
port = nil;
- options = [[decoder decodeObjectForKey:OPTIONS_KEY] mutableCopy];
+ options = [[decoder decodeObjectOfClass:[NSDictionary class]
forKey:OPTIONS_KEY] mutableCopy];
if ([options count] == 0)
options = nil;
password = [[options objectForKey:PASSWORD_KEY] copy];
[options removeObjectForKey:PASSWORD_KEY];
} else if ([self isZoom] || [self isSRU]) {
- host = [decoder decodeObjectForKey:HOST_KEY];
- port = [decoder decodeObjectForKey:PORT_KEY];
- options = [[decoder decodeObjectForKey:OPTIONS_KEY] mutableCopy];
+ host = [decoder decodeObjectOfClass:[NSString class]
forKey:HOST_KEY];
+ port = [decoder decodeObjectOfClass:[NSString class]
forKey:PORT_KEY];
+ options = [[decoder decodeObjectOfClass:[NSDictionary class]
forKey:OPTIONS_KEY] mutableCopy];
password = [[options objectForKey:PASSWORD_KEY] copy];
[options removeObjectForKey:PASSWORD_KEY];
} else {
@@ -183,6 +183,8 @@
[coder encodeObject:options forKey:OPTIONS_KEY];
}
++ (BOOL)supportsSecureCoding { return YES; }
+
- (id)copyWithZone:(NSZone *)aZone {
[passwordLock lockForReading];
id copy = [[BDSKServerInfo alloc] initWithType:[self type] name:[self
name] database:[self database] host:[self host] port:[self port]
options:options password:password passwordInKeychain:passwordInKeychain];
Modified: trunk/bibdesk/BDSKSmartGroup.m
===================================================================
--- trunk/bibdesk/BDSKSmartGroup.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKSmartGroup.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -94,7 +94,7 @@
- (instancetype)initWithCoder:(NSCoder *)decoder {
self = [super initWithCoder:decoder];
if (self) {
- filter = [decoder decodeObjectForKey:@"filter"];
+ filter = [decoder decodeObjectOfClass:[BDSKFilter class]
forKey:@"filter"];
[filter setGroup:self];
}
return self;
Modified: trunk/bibdesk/BDSKStaticGroup.m
===================================================================
--- trunk/bibdesk/BDSKStaticGroup.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKStaticGroup.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -90,7 +90,7 @@
return [NSDictionary dictionaryWithObjectsAndKeys:aName, @"group name",
[keys componentsJoinedByString:@","], @"keys", nil];
}
-// we don't really care about the publications for unarchoving, as we only use
NSCoding to remember group selection
+// we don't really care about the publications for unarchoving, as we only use
NSSecureCoding to remember group selection
- (instancetype)initWithCoder:(NSCoder *)decoder {
self = [super initWithCoder:decoder];
if (self) {
Modified: trunk/bibdesk/BDSKStringNode.h
===================================================================
--- trunk/bibdesk/BDSKStringNode.h 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKStringNode.h 2025-11-12 17:43:31 UTC (rev 29784)
@@ -46,7 +46,7 @@
BDSKStringNodeMacro = 2
};
-@interface BDSKStringNode : NSObject <NSCopying, NSCoding>{
+@interface BDSKStringNode : NSObject <NSCopying, NSSecureCoding>{
@public
BDSKStringNodeType type;
NSString *value;
Modified: trunk/bibdesk/BDSKStringNode.m
===================================================================
--- trunk/bibdesk/BDSKStringNode.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKStringNode.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -78,7 +78,7 @@
self = [super init];
if (self) {
type = [coder decodeIntegerForKey:@"type"];
- value = [coder decodeObjectForKey:@"value"];
+ value = [coder decodeObjectOfClass:[NSString class]
forKey:@"value"];
}
} else {
self = [NSKeyedUnarchiver unarchiveObjectWithData:[coder
decodeDataObject]];
@@ -95,6 +95,8 @@
}
}
++ (BOOL)supportsSecureCoding { return YES; }
+
- (id)replacementObjectForPortCoder:(NSPortCoder *)encoder
{
return [encoder isByref] ? [super replacementObjectForPortCoder:encoder] :
self;
Modified: trunk/bibdesk/BDSKToken.h
===================================================================
--- trunk/bibdesk/BDSKToken.h 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKToken.h 2025-11-12 17:43:31 UTC (rev 29784)
@@ -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-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKToken.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -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];
@@ -149,6 +149,8 @@
[encoder encodeInteger:italic forKey:ITALIC_KEY];
}
++ (BOOL)supportsSecureCoding { return YES; }
+
- (id)copyWithZone:(NSZone *)aZone {
BDSKToken *copy = [[[self class] alloc] initWithTitle:title];
[copy setFontName:fontName];
@@ -247,7 +249,7 @@
- (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;
}
@@ -316,9 +318,9 @@
- (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;
}
@@ -421,8 +423,8 @@
- (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;
}
@@ -527,7 +529,7 @@
- (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;
}
@@ -608,8 +610,8 @@
- (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;
}
@@ -696,8 +698,8 @@
- (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;
}
@@ -780,7 +782,7 @@
- (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;
}
@@ -861,8 +863,8 @@
- (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;
}
@@ -956,8 +958,8 @@
- (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;
}
Modified: trunk/bibdesk/BDSKTreeNode.h
===================================================================
--- trunk/bibdesk/BDSKTreeNode.h 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKTreeNode.h 2025-11-12 17:43:31 UTC (rev 29784)
@@ -40,7 +40,7 @@
NS_ASSUME_NONNULL_BEGIN
-@interface BDSKTreeNode : NSObject <NSCoding, NSCopying>
+@interface BDSKTreeNode : NSObject <NSSecureCoding, NSCopying>
{
NSMutableArray *children;
NSMutableDictionary *columnValues;
Modified: trunk/bibdesk/BDSKTreeNode.m
===================================================================
--- trunk/bibdesk/BDSKTreeNode.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKTreeNode.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -68,9 +68,9 @@
- (instancetype)initWithCoder:(NSCoder *)coder;
{
if(self = [super init]){
- children = [[NSMutableArray alloc] initWithArray:[coder
decodeObjectForKey:@"children"]];
- columnValues = [[NSMutableDictionary alloc] initWithDictionary:[coder
decodeObjectForKey:@"columnValues"]];
- parent = [coder decodeObjectForKey:@"parent"];
+ children = [[NSMutableArray alloc] initWithArray:[coder
decodeObjectOfClass:[NSArray class] forKey:@"children"]];
+ columnValues = [[NSMutableDictionary alloc] initWithDictionary:[coder
decodeObjectOfClass:[NSDictionary class] forKey:@"columnValues"]];
+ parent = [coder decodeObjectOfClass:[BDSKTreeNode class]
forKey:@"parent"];
}
return self;
}
@@ -82,6 +82,8 @@
[coder encodeConditionalObject:parent forKey:@"parent"];
}
++ (BOOL)supportsSecureCoding { return YES; }
+
- (id)copyWithZone:(NSZone *)aZone;
{
// deep copy the array of children, since the copy could modify the
original
Modified: trunk/bibdesk/BDSKURLGroup.m
===================================================================
--- trunk/bibdesk/BDSKURLGroup.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BDSKURLGroup.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -100,7 +100,7 @@
- (instancetype)initWithCoder:(NSCoder *)decoder {
self = [super initWithCoder:decoder];
if (self) {
- URL = [decoder decodeObjectForKey:@"URL"];
+ URL = [decoder decodeObjectOfClass:[NSURL class] forKey:@"URL"];
isRetrieving = NO;
failedDownload = NO;
Modified: trunk/bibdesk/BibAuthor.h
===================================================================
--- trunk/bibdesk/BibAuthor.h 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BibAuthor.h 2025-11-12 17:43:31 UTC (rev 29784)
@@ -54,7 +54,7 @@
@abstract Modeling authors as objects that can have interesting
relationships
@discussion none.
*/
-@interface BibAuthor : NSObject <NSCopying, NSCoding> {
+@interface BibAuthor : NSObject <NSCopying, NSSecureCoding> {
NSString *originalName;
NSString *name;
NSString *firstName;
Modified: trunk/bibdesk/BibAuthor.m
===================================================================
--- trunk/bibdesk/BibAuthor.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BibAuthor.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -120,8 +120,8 @@
- (instancetype)initWithCoder:(NSCoder *)coder{
if([coder allowsKeyedCoding]){
self = [super init];
- publication = [coder decodeObjectForKey:@"publication"];
- originalName = [coder decodeObjectForKey:@"name"];
+ publication = [coder decodeObjectOfClass:[BibItem class]
forKey:@"publication"];
+ originalName = [coder decodeObjectOfClass:[NSString class]
forKey:@"name"];
// this should take care of the rest of the ivars
[self setupNames];
} else {
@@ -139,6 +139,8 @@
}
}
++ (BOOL)supportsSecureCoding { return YES; }
+
- (id)replacementObjectForPortCoder:(NSPortCoder *)encoder
{
return [encoder isByref] ? [super replacementObjectForPortCoder:encoder] :
self;
Modified: trunk/bibdesk/BibItem.h
===================================================================
--- trunk/bibdesk/BibItem.h 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BibItem.h 2025-11-12 17:43:31 UTC (rev 29784)
@@ -93,7 +93,7 @@
@discussion This is the data model class that encapsulates each Bibtex entry.
BibItems are created for each entry in a file, and a BibDocument keeps
collections of BibItems. They are also created in response to drag-in or paste
operations containing BibTeX source. Their textvalue method is used to provide
the text that is written to a file on saves.
*/
-@interface BibItem : NSObject <NSCopying, NSCoding, BDSKParseableItem,
BDSKLinkedFileDelegate, BDSKItemDownloadDelegate> {
+@interface BibItem : NSObject <NSCopying, NSSecureCoding, BDSKParseableItem,
BDSKLinkedFileDelegate, BDSKItemDownloadDelegate> {
NSString *citeKey;
NSString *pubType;
NSMutableDictionary *pubFields;
Modified: trunk/bibdesk/BibItem.m
===================================================================
--- trunk/bibdesk/BibItem.m 2025-11-12 16:48:42 UTC (rev 29783)
+++ trunk/bibdesk/BibItem.m 2025-11-12 17:43:31 UTC (rev 29784)
@@ -278,12 +278,12 @@
- (instancetype)initWithCoder:(NSCoder *)coder{
if([coder allowsKeyedCoding]){
if(self = [super init]){
- pubFields = [[NSMutableDictionary alloc] initWithDictionary:[coder
decodeObjectForKey:@"pubFields"]];
- [self setCiteKeyString:[coder decodeObjectForKey:@"citeKey"]];
- [self setPubTypeString:[coder decodeObjectForKey:@"pubType"]];
+ pubFields = [[NSMutableDictionary alloc] initWithDictionary:[coder
decodeObjectOfClass:[NSDictionary class] forKey:@"pubFields"]];
+ [self setCiteKeyString:[coder decodeObjectOfClass:[NSString class]
forKey:@"citeKey"]];
+ [self setPubTypeString:[coder decodeObjectOfClass:[NSString class]
forKey:@"pubType"]];
groups = [[NSMutableDictionary alloc] initWithCapacity:5];
URLs = [[NSMutableDictionary alloc] initWithCapacity:5];
- files = [[NSMutableArray alloc] initWithArray:[coder
decodeObjectForKey:@"files"]];
+ files = [[NSMutableArray alloc] initWithArray:[coder
decodeObjectOfClass:[NSArray class] forKey:@"files"]];
[files setValue:self forKey:@"delegate"];
// set by the document, which we don't archive
owner = nil;
@@ -321,6 +321,8 @@
}
}
++ (BOOL)supportsSecureCoding { return YES; }
+
- (id)replacementObjectForPortCoder:(NSPortCoder *)encoder
{
return [encoder isByref] ? [super replacementObjectForPortCoder:encoder] :
self;
@@ -502,7 +504,7 @@
[NSString setMacroResolverForUnarchiving:aMacroResolver];
- NSArray *pubs = [unarchiver decodeObjectForKey:@"publications"];
+ NSArray *pubs = [unarchiver decodeObjectOfClass:[NSArray class]
forKey:@"publications"];
[unarchiver finishDecoding];
[NSString setMacroResolverForUnarchiving:nil];
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