From c56634f859c8572b4b1642bb4f64b8b24866470b Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 5 Jul 2011 17:40:34 +0000 Subject: [PATCH] See ChangeLog Monotone-Parent: d68444a3c794ab5baa8363ca087ec5caad13ba7b Monotone-Revision: 0b515b8331401536a0de4cc2ca53fce6dd6ca6ed Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2011-07-05T17:40:34 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ SOPE/GDLContentStore/GCSFolderManager.m | 23 ++++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 52167d922..c7186867e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,10 @@ * SoObjects/SOGo/SOGoSieveManager.m: Added patch from bug #1344 - which fixes Sieve script generation errors for reject filters. + * SOPE/GDLContentStore/GCSFolderManager.m ( + _reallyCreateFolderWithName:andFolderType:...): Fix + path handling for recent GNUstep base versions. This + fixes bug #1327. 2011-07-02 Ludovic Marcotte diff --git a/SOPE/GDLContentStore/GCSFolderManager.m b/SOPE/GDLContentStore/GCSFolderManager.m index 6b998734d..0078f9b68 100644 --- a/SOPE/GDLContentStore/GCSFolderManager.m +++ b/SOPE/GDLContentStore/GCSFolderManager.m @@ -728,15 +728,15 @@ static NSCharacterSet *asciiAlphaNumericCS = nil; andChannel: (EOAdaptorChannel *) channel atPath: (NSString *) path { - NSException *error; - NSString *baseURL, *tableName, *quickTableName, *aclTableName, *createQuery, - *sql; + NSString *baseURL, *tableName, *quickTableName, *aclTableName, *createQuery, *sql; + GCSSpecialQueries *specialQuery; EOAdaptorContext *aContext; NSMutableArray *paths; - GCSSpecialQueries *specialQuery; + NSException *error; + NSRange range; + + paths = [NSMutableArray arrayWithArray: [path componentsSeparatedByString: @"/"]]; - paths - = [NSMutableArray arrayWithArray: [path componentsSeparatedByString: @"/"]]; while ([paths count] < 5) [paths addObject: @"NULL"]; @@ -747,9 +747,14 @@ static NSCharacterSet *asciiAlphaNumericCS = nil; quickTableName = [tableName stringByAppendingString: @"_quick"]; aclTableName = [tableName stringByAppendingString: @"_acl"]; - // TBD: fix SQL injection issues - baseURL - = [[folderInfoLocation absoluteString] stringByDeletingLastPathComponent]; + // TBD: fix SQL injection issues. + // We no longer call stringByDeletingLastPathComponent since, since GNUstep 1.22, + // it'll replace // characters in the URL with /, so mysql:// becomes mysql:/ + // This is to conform with recent Apple changes. + baseURL = [folderInfoLocation absoluteString]; + range = [baseURL rangeOfString: @"/" options: NSBackwardsSearch]; + if (range.location != NSNotFound) + baseURL = [baseURL substringToIndex: range.location]; sql = [NSString stringWithFormat: @"INSERT INTO %@" @" (c_path, c_path1, c_path2, c_path3, c_path4,"