Revision: 22321 http://sourceforge.net/p/bibdesk/svn/22321 Author: hofman Date: 2018-06-17 21:25:03 +0000 (Sun, 17 Jun 2018) Log Message: ----------- make sure scripting does not use invalid characters in macro keys
Modified Paths: -------------- trunk/bibdesk/BDSKMacro.m trunk/bibdesk/BDSKMacroResolver+Scripting.m Modified: trunk/bibdesk/BDSKMacro.m =================================================================== --- trunk/bibdesk/BDSKMacro.m 2018-06-17 21:19:58 UTC (rev 22320) +++ trunk/bibdesk/BDSKMacro.m 2018-06-17 21:25:03 UTC (rev 22321) @@ -41,6 +41,7 @@ #import "BDSKOwnerProtocol.h" #import "NSObject_BDSKExtensions.h" #import "NSString_BDSKExtensions.h" +#import "BDSKTypeManager.h" @implementation BDSKMacro @@ -101,12 +102,17 @@ - (void)setName:(NSString *)newName { if ([macroResolver owner] && [[macroResolver owner] isDocument]) { - if (name != newName) { - if ([macroResolver valueOfMacro:name] != nil) - [macroResolver changeMacro:name to:newName]; - [[macroResolver undoManager] setActionName:NSLocalizedString(@"AppleScript",@"Undo action name for AppleScript")]; - [name release]; - name = [newName copy]; + if ([newName rangeOfCharacterFromSet:[[BDSKTypeManager sharedManager] invalidFieldNameCharacterSet]].location == NSNotFound) { + if (name != newName) { + if ([macroResolver valueOfMacro:name] != nil) + [macroResolver changeMacro:name to:newName]; + [[macroResolver undoManager] setActionName:NSLocalizedString(@"AppleScript",@"Undo action name for AppleScript")]; + [name release]; + name = [newName copy]; + } + } else { + NSScriptCommand *cmd = [NSScriptCommand currentCommand]; + [cmd setScriptErrorNumber:NSArgumentsWrongScriptError]; } } else { NSScriptCommand *cmd = [NSScriptCommand currentCommand]; Modified: trunk/bibdesk/BDSKMacroResolver+Scripting.m =================================================================== --- trunk/bibdesk/BDSKMacroResolver+Scripting.m 2018-06-17 21:19:58 UTC (rev 22320) +++ trunk/bibdesk/BDSKMacroResolver+Scripting.m 2018-06-17 21:25:03 UTC (rev 22321) @@ -38,11 +38,17 @@ #import "BDSKMacroResolver+Scripting.h" #import "BDSKMacro.h" +#import "BDSKTypeManager.h" @implementation BDSKMacroResolver (Scripting) - (BDSKMacro *)valueInMacrosWithName:(NSString *)aName { + if ([aName rangeOfCharacterFromSet:[[BDSKTypeManager sharedManager] invalidFieldNameCharacterSet]].location != NSNotFound) { + NSScriptCommand *cmd = [NSScriptCommand currentCommand]; + [cmd setScriptErrorNumber:NSArgumentsWrongScriptError]; + return nil; + } return [[[BDSKMacro alloc] initWithName:aName macroResolver:self] autorelease]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Bibdesk-commit mailing list Bibdesk-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-commit