]> err.no Git - scalable-opengroupware.org/commitdiff
fixed a bug in subject handling
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Mon, 18 Jul 2005 12:27:09 +0000 (12:27 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Mon, 18 Jul 2005 12:27:09 +0000 (12:27 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@787 d1b88da0-ebda-0310-925b-ed51d893ca5b

SOGo/UI/MailerUI/ChangeLog
SOGo/UI/MailerUI/UIxSubjectFormatter.m
SOGo/UI/MailerUI/Version

index 6b97920e457763dd4b166fb0c48fb0c3c16ad974..4d1fd8fed13a15b9473808feb693fdf2a33558b8 100644 (file)
@@ -1,3 +1,9 @@
+2005-07-18  Helge Hess  <helge.hess@opengroupware.org>
+
+       * UIxSubjectFormatter.m: fixed a stupid bug in subject handling leading
+         to an infinite loop in the QP processing, hardened against QP loops
+         (v0.9.143)
+
 2005-07-18  Marcus Mueller  <znek@mulle-kybernetik.com>
 
         * UIxMailEditor.m: removed -emailForUser usage and replaced with
index 60647c6621dde983ef23fae4762ac0abfb22cf13..683fd3ade2b59c46ff8fae39d4e16bd4cb0f2595 100644 (file)
@@ -95,9 +95,9 @@ static Class DataClass = Nil;
   NSString *s, *r;
   unsigned len;
   
-  if ((len = [_subject length] == 0))
+  if ((len = [_subject length]) == 0)
     return [self missingSubjectLabel];
-
+  
   /* check for quoted printable */
   
   if (len > 6 && [self shouldDecodeQP]) {
@@ -111,13 +111,15 @@ static Class DataClass = Nil;
       t = [_subject decodeQuotedPrintableValueOfMIMEHeaderField:@"subject"];
       if ([t isNotNull])
        return [self stringForObjectValue:t];
+      else
+       [self warnWithFormat:@"decoding QP failed: '%@'", t];
     }
   }
   
   /* continue NSData processing */
   
-  [self warnWithFormat:@"NSData subject! (using UTF-8 to decode!)"];
-
+  [self warnWithFormat:@"NSData subject, using UTF-8 to decode."];
+  
   // TODO: exception handler?
   s = [[NSString alloc] initWithData:_subject encoding:NSUTF8StringEncoding];
   if (s == nil) {
@@ -125,7 +127,12 @@ static Class DataClass = Nil;
     return [self labelForKey:@"Error_CouldNotDecodeSubject"];
   }
   
-  r = [[self stringForStringValue:s] copy];
+  if ([s hasPrefix:@"=?"]) { // TODO: this should never happen?
+    [self warnWithFormat:@"subject still has QP signature: '%@'", s];
+    r = [s copy];
+  }
+  else
+    r = [[self stringForStringValue:s] copy];
   [s release];
   return [r autorelease];
 }
index af05addd20e9b05128334e50e3203ba21fb6c04d..998a6a8286b7a3619fb8a8c08177dba99a3db189 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=142
+SUBMINOR_VERSION:=143
 
 # v0.9.140 requires SoObjects/Mailer v0.9.100
 # v0.9.134 requires libSOGo          v0.9.41