Piotr Caban : advapi32: Validate arguments in StartServiceCtrlDispatcher.
Module: wine Branch: master Commit: 6027fe2dafa89456d9f000d8c4b0a879737ed2e0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6027fe2dafa89456d9f000d8c4... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Mon Oct 22 14:25:13 2012 +0200 advapi32: Validate arguments in StartServiceCtrlDispatcher. --- dlls/advapi32/service.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c index 49d56d1..2ec6d8e 100644 --- a/dlls/advapi32/service.c +++ b/dlls/advapi32/service.c @@ -565,6 +565,12 @@ BOOL WINAPI StartServiceCtrlDispatcherA( const SERVICE_TABLE_ENTRYA *servent ) return FALSE; } while (servent[nb_services].lpServiceName) nb_services++; + if (!nb_services) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; + } + services = HeapAlloc( GetProcessHeap(), 0, nb_services * sizeof(*services) ); for (i = 0; i < nb_services; i++) @@ -610,6 +616,12 @@ BOOL WINAPI StartServiceCtrlDispatcherW( const SERVICE_TABLE_ENTRYW *servent ) return FALSE; } while (servent[nb_services].lpServiceName) nb_services++; + if (!nb_services) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; + } + services = HeapAlloc( GetProcessHeap(), 0, nb_services * sizeof(*services) ); for (i = 0; i < nb_services; i++)
participants (1)
-
Alexandre Julliard