On Tue, Sep 15, 2009 at 9:04 PM, Johan Kool <johank...@gmail.com> wrote:
> Dear list, > > I need to work with strings as in stringA. (I don't have much choice, but > to have it in a NSString at the start.) I want to have the readable output > "hello world". > > NSString *stringA = @"hello\040world"; > NSString *stringB = [NSString stringWithUTF8String:"hello\040world"] ; > > // This works, so I know NSString can deal with the encoding I have in > stringA > NSLog(stringB); > > // This does not work (as expected) > NSLog([NSString stringWithUTF8String:[stringA UTF8String]]); > > // Nor does this work > NSLog([NSString stringWithUTF8String:[[stringA > dataUsingEncoding:NSUTF8StringEncoding] bytes]]); > > // Or this for that matter > NSLog([NSString stringWithUTF8String:[[stringA > dataUsingEncoding:NSASCIIStringEncoding] bytes]]); Never pass a string like that to NSLog. NSLog takes the first parameter as the FORMAT definition for the log statement. It parses that string looking for %d, etc. and then will attempt pull additional parameters based on what it parses. So it can cause in proper memory/stack access which can crash and/or expose information from you processes memory. Always ensure the first parameter you pass to NSLog is a proper format string (this goes for any function that takes a format string). NSLog(@"%@", ...) in this case. -Shawn _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com