]> err.no Git - sope/commitdiff
improved nil handling in session extra vars
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 7 May 2007 12:08:31 +0000 (12:08 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 7 May 2007 12:08:31 +0000 (12:08 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1477 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/NGObjWeb/ChangeLog
sope-appserver/NGObjWeb/SoObjects/SoHTTPAuthenticator.m
sope-appserver/NGObjWeb/Version
sope-appserver/NGObjWeb/WOSession.m

index ee373379e7bab6f96d5f54b644277979ace0197b..706496b73e80f597f147f972c1a54e085df62c2e 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-07  Helge Hess  <helge.hess@opengroupware.org>
+
+       * WOSession.m: do not attempt to process 'nil' keys when working on
+         extra variables (lead to NSDictionary exceptions) (v4.7.8)
+
 2007-05-08  Helge Hess  <helge.hess@opengroupware.org>
 
        * WOApplication.m: properly call +_setupSNS method
index 4e53c3a91e64825af449b2442d0da56e0adbe5fc..d29066b735a5ea0a18dfada4f32b67f2a9eb88ef 100644 (file)
   
   rng = [login rangeOfString:@"\\"];
   if (rng.length > 0) {
-    [self debugWithFormat:@"splitting of domain in login: '%@'", login];
+    [self debugWithFormat:@"splitting off domain in login: '%@'", login];
     login = [login substringFromIndex:(rng.location + rng.length)];
   }
   return [NSArray arrayWithObjects:login, pwd, nil];
index 42cb725a52b8573ae41f1438eda8ad8adf4b9397..78e42d46645b35fe35d2d61e87018954c36e9bca 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=7
+SUBMINOR_VERSION:=8
 
 # v4.5.234 requires libDOM          v4.5.21
 # v4.5.214 requires libNGExtensions v4.5.179
index 692c228cda6f87aa594c7dc3d7a48a51918a4be6..72e557d64fff4a1585d3404a7c1720416f7751d7 100644 (file)
@@ -1,5 +1,6 @@
 /*
-  Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2000-2007 SKYRIX Software AG
+  Copyright (C) 2007      Helge Hess
 
   This file is part of SOPE.
 
@@ -587,19 +588,32 @@ static Class NSDateClass = Nil;
 /* session variables */
 
 - (void)setObject:(id)_obj forKey:(NSString *)_key {
+  if (_key == nil) {
+    [self warnWithFormat:@"%s: got no key for extra variable.",
+           __PRETTY_FUNCTION__];
+    return;
+  }
+
   if (self->wosVariables == nil)
     self->wosVariables = [[NSMutableDictionary alloc] initWithCapacity:16];
   
-  if (_obj)
+  if (_obj != nil)
     [self->wosVariables setObject:_obj forKey:_key];
   else
     [self->wosVariables removeObjectForKey:_key];
 }
+
 - (id)objectForKey:(NSString *)_key {
-  return [self->wosVariables objectForKey:_key];
+  return _key != nil ? [self->wosVariables objectForKey:_key] : nil;
 }
 
 - (void)removeObjectForKey:(NSString *)_key {
+  if (_key == nil) {
+    [self warnWithFormat:@"%s: got no key of extra variable to be removed.",
+           __PRETTY_FUNCTION__];
+    return;
+  }
+
   [self->wosVariables removeObjectForKey:_key];
 }