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

Reply via email to