[Vm-dev] [FIXED] SqueakSSL for Windows :)

Levente Uzonyi leves at elte.hu
Tue Apr 21 17:46:07 UTC 2015


I just took a look at the Mac version of the function, and that's also 
missing some of these fixes.

Levente

On Tue, 21 Apr 2015, Levente Uzonyi wrote:

>
> Great news! I dug up a windows machine this morning to do this myself 
> somewhere in the near future, but you guys were faster.
> I found that the sqSetStringPropertySSL function in the Windows branch still 
> has the memory leaks I patched a while ago on Unix. The function should be 
> something like this:
>
> sqInt sqSetStringPropertySSL(sqInt handle, int propID, char *propName, sqInt 
> propLen) {
> 	sqSSL *ssl = sslFromHandle(handle);
> 	char *property = NULL;
>
> 	if(ssl == NULL) return 0;
>
> 	if(propLen > 0) {
>                property = malloc(propLen + 1);
>                memcpy(property, propName, propLen);
>                property[propLen] = '\0';
>        };
>
> 	if(ssl->loglevel) printf("sqSetStringPropertySSL(%d): %s\n", propID, 
> property ? propery : "(null)");
>
> 	switch(propID) {
> 		case SQSSL_PROP_CERTNAME:
> 			if (ssl->certName) free(ssl->certName);
> 			ssl->certName = property;
> 			break;
> 		case SQSSL_PROP_SERVERNAME:
> 			if (ssl->serverName) free(ssl->serverName);
> 			ssl->serverName = property;
> 			break;
> 		/* Platform specific: Adds a .PFX file to MY certificate 
> store w/o password.
> 		   Useful for installing the default test certificate in 
> SqueakSSL. */
> 		case 10001:
> 			if(property) free(property);
> 			return sqAddPfxCertToStore(propName, propLen, NULL, 
> 0);
> 		default:
> 			if(property) free(property);
> 			if(ssl->loglevel) printf("sqSetStringPropertySSL: 
> Unknown property ID %d\n", propID);
> 			return 0;
> 	}
> 	return 1;
> }
>
> This version doesn't let null be passed to printf, because that results in 
> undefined behavior.
> It frees property when it's not used to avoid leaking memory.
> It frees ssl->certName when it's replaced to avoid leaking memory.
> It doesn't try to allocate property, if propLen is negative.
> It uses malloc instead of calloc for better performance :).
>
>
> Levente
>
> On Tue, 21 Apr 2015, Marcel Taeumel wrote:
>
>> 
>> Hi, there! :)
>> 
>> Tobias and I fixed the SqueakSSL implementation for Windows. Please find 
>> the
>> modified source code attached and add it to the VM code repository.
>> 
>> sqWin32SSL.c <http://forum.world.st/file/n4820813/sqWin32SSL.c>
>> 
>> The fixes are:
>> 
>> - SNI support
>> - setting an Int property via sqSetIntPropertySSL(...)
>> - Unicode problems when extracting the correct peerName in 
>> sqExtractPeerName
>> 
>> Tobias will send around builds for the shared libraries ASAP. :)
>> 
>> Best,
>> Marcel
>> 
>> 
>> 
>> --
>> View this message in context: 
>> http://forum.world.st/FIXED-SqueakSSL-for-Windows-tp4820813.html
>> Sent from the Squeak VM mailing list archive at Nabble.com.
>> 
>


More information about the Vm-dev mailing list