From b6b9375f4df011da394f61aa686e30b43e2beb95 Mon Sep 17 00:00:00 2001 From: fedor Date: Sun, 14 Mar 2010 19:05:57 +0000 Subject: [PATCH] Correct format syntax git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29954 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 +++++ Source/NSHTTPCookie.m | 27 +++++++++++++++++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1fa1bda6d..5e91a1ae2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-03-14 Adam Fedor + + * Source/NSHTTPCookie.m (+requestHeaderFieldsWithCookies:): + Correct format syntax. + 2010-03-13 Richard Frith-Macdonald * configure.ac: Note use of nonfragile abi diff --git a/Source/NSHTTPCookie.m b/Source/NSHTTPCookie.m index fd4f8ee35..5236903cc 100644 --- a/Source/NSHTTPCookie.m +++ b/Source/NSHTTPCookie.m @@ -183,7 +183,8 @@ static NSRange GSRangeOfCookie(NSString *string); if ([dict objectForKey: NSHTTPCookieDomain] == nil) [dict setObject: defaultDomain forKey: NSHTTPCookieDomain]; cookie = [NSHTTPCookie cookieWithProperties: dict]; - [a addObject: cookie]; + if (cookie) + [a addObject: cookie]; } if ([field length] <= NSMaxRange(range)) break; @@ -231,7 +232,7 @@ static NSRange GSRangeOfCookie(NSString *string); while ((ck = [ckenum nextObject])) { NSString *str; - str = [NSString stringWithFormat: @"$@=$@", [ck name], [ck value]]; + str = [NSString stringWithFormat: @"%@=%@", [ck name], [ck value]]; if (field) field = [field stringByAppendingFormat: @"; %@", str]; else @@ -273,18 +274,28 @@ static NSRange GSRangeOfCookie(NSString *string); return [this->_properties objectForKey: NSHTTPCookieExpires]; } +- (BOOL) _isValidProperty: (NSString *)prop +{ + return ([prop length] + && [prop rangeOfString: @"\n"].location == NSNotFound); +} + - (id) initWithProperties: (NSDictionary *)properties { NSMutableDictionary *rawProps; if ((self = [super init]) == nil) return nil; - /* Parse a few values. Based on Mac OS X tests. - FIXME: Probably needs more checking. */ - if ([properties objectForKey: NSHTTPCookiePath] == nil) - return nil; - if ([properties objectForKey: NSHTTPCookieDomain] == nil) - return nil; + /* Check a few values. Based on Mac OS X tests. */ + if (![self _isValidProperty: [properties objectForKey: NSHTTPCookiePath]] + || ![self _isValidProperty: [properties objectForKey: NSHTTPCookieDomain]] + || ![self _isValidProperty: [properties objectForKey: NSHTTPCookieName]] + || ![self _isValidProperty: [properties objectForKey: NSHTTPCookieValue]] + ) + { + [self release]; + return nil; + } rawProps = [[properties mutableCopy] autorelease]; if ([rawProps objectForKey: @"Created"] == nil)