On Jan 31, 2010, at 9:12 PM, Kyle Sluder wrote:

> On Sun, Jan 31, 2010 at 5:51 PM, Stuart Malin <stu...@zhameesha.com> wrote:
>> I acquire a password from a keychain using SecKeychainFindGenericPassword. 
>> That provides a non null terminated c string and a length. I had been using 
>> [NSString stringWithCString: length:] to get an NSString instance of the 
>> password. However, the +stringWithCString:length: method was deprecated way 
>> back, so I thought I'd clean up my code and use +stringWithCString:encoding: 
>>  -- however that doesn't work because the  supplied C string isn't null 
>> terminated. I did a bit of searching, and found in the archives on 
>> CocoaBuilder [1] someone's solution back in September of 2005, which was to 
>> copy the acquired password to a new buffer of 1 additional byte and create a 
>> new null terminated C string there:
> 
> You could wrap the provided buffer with an NSData and use -[NSString 
> initWithData:encoding:].


If I use +dataWithBytes:length: then I need to specify a length 1 greater, and 
that additional byte must be set to 0 (to null terminate the string). So, I 
could use NSMutableData, then -resetBytesInRange: to zero out the last byte, 
which requires creating an NSRange struct, and that all seems heavier than just 
using the C code.  But then, the processor is fast, and this is code that is 
run rarely, so optimizing isn't important.  I guess it is just a question of 
style...


_______________________________________________

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

Reply via email to