Windows support
David Woodhouse
dwmw2 at infradead.org
Tue Feb 11 04:42:48 EST 2014
On Tue, 2014-02-11 at 10:28 +0100, Nikos Mavrogiannopoulos wrote:
> On Tue, Feb 11, 2014 at 10:09 AM, David Woodhouse <dwmw2 at infradead.org> wrote:
> >> Yes, this is how errno is interpreted in windows:
> >> https://gitorious.org/gnutls/gnutls/source/505540944f1dd6a655a691714aed6d54ea7671fa:lib/system.c#L69
> > Um,... if that's all handled in GnuTLS already, why do we even bother
> > with overriding the pull/push/errno functions for OpenConnect? Couldn't
> > I just strip that bit out?
>
> The errno you can strip out. The recv et al, only if you compile with
> a gnutls version that doesn't have the bug with gnulib replacement
> functions (I think that's 3.2.9, or 3.1.19 and later).
How does this bug manifest itself? I'm building with Fedora's
mingw32-gnutls-3.1.16 package and both DTLS and TLS seem to be working
OK at first glance, at least under Wine.
> > Btw, do you have reason to believe that Windows' putenv() takes a *copy*
> > of the string? The Linux man page for putenv is very clear that it'll
> > use the string in place and using an auto variable for it is very wrong.
> > Was that an oversight on your part, or do you know something I don't?
>
> No reason, it looks like a bug.
Actually, apart from setenv(foo, NULL) crashing I think your functions
are fine. This test case:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char foo[]="FOO=bar";
char *bar;
putenv(foo);
printf("FOO is: %s\n", getenv("FOO"));
foo[5] = 'f';
printf("FOO is: %s\n", getenv("FOO"));
putenv("FOO=");
printf("FOO is: %s\n", getenv("FOO"));
}
... according to POSIX should give:
[dwoodhou at i7 win32]$ ./foo
FOO is: bar
FOO is: bfr
FOO is:
but under Wine and under Windows 7 it gives what we want:
[dwoodhou at i7 win32]$ wine foo.exe
FOO is: bar
FOO is: bar
FOO is: (null)
--
dwmw2
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 5745 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openconnect-devel/attachments/20140211/11b39c8a/attachment-0001.bin>
More information about the openconnect-devel
mailing list