We originally decided to avoid Foundation if we could, though I don't remember 
why.  If we don't object to using Foundation on the Mac then this is fine.  

Anybody else have an opinion about that?

Jim

> On Jul 3, 2014, at 1:23 PM, Jean-Daniel Dupas <[email protected]> wrote:
> 
> Hello,
> 
> I have a question about that piece of code in Host::GetOSVersion for OS X.
> 
> 
>                       CFStringRef product_version_cfstr = (CFStringRef) 
> product_version_value;
>                        product_version_str = 
> CFStringGetCStringPtr(product_version_cfstr, kCFStringEncodingUTF8);
>                        if (product_version_str != NULL) {
>                            if (CFStringGetCString(product_version_cfstr, 
> buffer, 256, kCFStringEncodingUTF8))
>                                product_version_str = buffer;
>                        }
> 
> If CFStringGetCStringPtr() returns NULL, the call to CFStringGetCString() 
> which is perfectly valid will never be executed.
> If it returns a valid pointer, we discard the result by calling 
> CFStringGetCString().
> 
> And if we reverse the check and fallback to CFStringGetCString() only when 
> CFStringGetCStringPtr returns NULL, we will end up with a reference to a 
> freed string at the time we try to parse it (as the owner of the string is 
> property_list)
> 
> Anyway, here is a patch that replaces that whole function by 4 lines of 
> Obj-C. As a bonus, it removes a call to 
> CFURLCreateDataAndPropertiesFromResource() which is now deprecated.
> 
> Please review. Thanks
> -- Jean-Daniel
> 
> 
> 
> <osvers.patch>_______________________________________________
> lldb-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to