Add missing WINAPI in the definition of HandleServiceIO

WINAPI is __stdcall in 32 bit windows (ignored in 64 bit) causing
this bug to show up in the 32 bit version only.

Also fix out-of-bounds write of ovpn_version[] in openvpn.c

Resolves Trac #758

Signed-off-by: Selva Nair <selva.nair@gmail.com>
pull/95/head
Selva Nair 2016-11-14 21:45:57 -05:00
parent 19ada91d85
commit 1ec6c6cd12
1 changed files with 3 additions and 3 deletions

View File

@ -655,7 +655,7 @@ InitServiceIO (service_io_t *s)
* Read-completion routine for interactive service pipe. Call with * Read-completion routine for interactive service pipe. Call with
* err = 0, bytes = 0 to queue the first read request. * err = 0, bytes = 0 to queue the first read request.
*/ */
static void static void WINAPI
HandleServiceIO (DWORD err, DWORD bytes, LPOVERLAPPED lpo) HandleServiceIO (DWORD err, DWORD bytes, LPOVERLAPPED lpo)
{ {
service_io_t *s = (service_io_t *) lpo; service_io_t *s = (service_io_t *) lpo;
@ -680,7 +680,7 @@ HandleServiceIO (DWORD err, DWORD bytes, LPOVERLAPPED lpo)
} }
/* queue next read request */ /* queue next read request */
ReadFileEx (s->pipe, s->readbuf, capacity, lpo, (LPOVERLAPPED_COMPLETION_ROUTINE) HandleServiceIO); ReadFileEx (s->pipe, s->readbuf, capacity, lpo, HandleServiceIO);
/* Any error in the above call will get checked in next round */ /* Any error in the above call will get checked in next round */
} }
@ -1437,7 +1437,7 @@ CheckVersion()
retval = TRUE; retval = TRUE;
p = strtok(p+8, " "); p = strtok(p+8, " ");
strncpy(o.ovpn_version, p, _countof(o.ovpn_version)-1); strncpy(o.ovpn_version, p, _countof(o.ovpn_version)-1);
o.ovpn_version[_countof(o.ovpn_version)] = '\0'; o.ovpn_version[_countof(o.ovpn_version)-1] = '\0';
} }
} }