]> err.no Git - sope/commitdiff
improved robustness
authorznek <znek@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Tue, 19 Oct 2004 17:13:06 +0000 (17:13 +0000)
committerznek <znek@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Tue, 19 Oct 2004 17:13:06 +0000 (17:13 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@279 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-ical/versitSaxDriver/ChangeLog
sope-ical/versitSaxDriver/README
sope-ical/versitSaxDriver/VSSaxDriver.m
sope-ical/versitSaxDriver/Version

index 631b3cc8397447c63c06b95ee8473f765b2ed210..54c70c6622c4013ff17f14fb262e178783cb2e28 100644 (file)
@@ -1,3 +1,13 @@
+2004-10-19  Marcus Mueller  <znek@mulle-kybernetik.com>
+
+       * v4.3.9
+
+       * VSSaxDriver.m: improved robustness in respect to illegal content
+         lines - the parser shouldn't crash anymore. Also, changed the
+         "OGoDebugVersitSaxDriver" default to "VSSaxDriverDebugEnabled".
+
+       * README: documented the default
+
 2004-10-18  Marcus Mueller  <znek@mulle-kybernetik.com>
 
        * v4.3.8
index 67fc2bfa87d7cbf53ef69d00ea2deb0f8f5afb60..4fd5253f1b2e7a58c48d11de0414362a4eafb04c 100644 (file)
@@ -33,6 +33,15 @@ ToDo
 - make the driver fully xCal compliant
 
 
+Defaults
+========
+
+Name                            Type        Description
+------------------------------------------------------------------------------
+VSSaxDriverDebugEnabled         BOOL        YES -> log some debug information
+                                                   via NSLog
+
+
 Examples
 ========
 
index a0399b2211ddce9b30ea88d115903323157d89fa..230594d4e7244e473d34de96c0fe2a4a966071b0 100644 (file)
@@ -48,7 +48,7 @@ static VSStringFormatter *stringFormatter = nil;
   didInit = YES;
 
   ud      = [NSUserDefaults standardUserDefaults];
-  debugOn = [ud boolForKey:@"OGoDebugVersitSaxDriver"];
+  debugOn = [ud boolForKey:@"VSSaxDriverDebugEnabled"];
 
   dotCharSet =
     [[NSCharacterSet characterSetWithCharactersInString:@"."] retain];
@@ -416,12 +416,22 @@ static VSStringFormatter *stringFormatter = nil;
   unsigned       length;
 
   length = [_line length];
-  tagAttributes = [[NSMutableArray alloc] init];
   todoRange = NSMakeRange(0, length);
   r = [_line rangeOfCharacterFromSet:colonAndSemicolonCharSet
              options:0
              range:todoRange];
+  if(r.length == 0) {
+    if(debugOn) {
+      NSLog(@"%s got an improper content line! ->\n%@",
+            __PRETTY_FUNCTION__,
+            _line);
+    }
+    return;
+  }
+
   tagName = [[_line substringToIndex:r.location] uppercaseString];
+  tagAttributes = [[NSMutableArray alloc] init];
+
   if([_line characterAtIndex:r.location] != ':') {
     BOOL isAtEnd = NO, isInDquote = NO;
     unsigned start = NSMaxRange(r);
@@ -434,6 +444,16 @@ static VSStringFormatter *stringFormatter = nil;
       r = [_line rangeOfCharacterFromSet:colonSemicolonAndDquoteCharSet
                  options:0
                  range:todoRange];
+      /* is line well-formed ? */
+      if(r.length == 0 || r.location == 0) {
+        if(debugOn) {
+          NSLog(@"%s got an improper content line! ->\n%@",
+                __PRETTY_FUNCTION__,
+                _line);
+        }
+        [tagAttributes release];
+        return;
+      }
       /* first check if delimiter candidate is escaped */
       if([_line characterAtIndex:(r.location - 1)] != '\\') {
         unichar delimiter;
index edfa2d83990815e5f39eca760dc9b0783f70be7d..b191a15e76dac3e66bcd9f3cefe22e3b7ade21f4 100644 (file)
@@ -1,3 +1,3 @@
 # Version file
 
-SUBMINOR_VERSION:=8
+SUBMINOR_VERSION:=9