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:

buffer = (char *) malloc((passwordLength + 1) * sizeof(char));
strncpy(buffer, passwordData, passwordLength);
buffer[passwordLength] = 0;
password = [NSString stringWithUTF8String:buffer];
free(buffer);

Of course I would now change the NSString class method to 
+stringWithCString:encoding.  

Is this the best way to go about converting the string returned by the Carbon 
keychain code to an NSString? 
I am presuming I should stop using the deprecated method -- is that right? Or 
can I safely continue to use it? 

TIA for your wise counsel.

[1] 
http://www.cocoabuilder.com/archive/cocoa/145676-seckeychainfindgenericpassword.html?q=SecKeychainFindGenericPassword#145681
   (expand the 22:57 post by Ryan 
Britton)_______________________________________________

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