tdf#84553 Correctly handle failures while getting a WMI Object.

The output before this patch : checking for active Antivirus software... C:\cygwin\home\tdf\lode\jenkins\workspace\gerrit_windows\antivirusDetection.vbs(1, 1) (null): 0x8004100E

found

The link for which is : https://ci.libreoffice.org/job/gerrit_windows/57035/consoleFull

Change-Id: I714442739a8daf132e95b9f6a750aa7abab3561e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88465
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
This commit is contained in:
Michel Thomas 2020-02-11 21:34:57 +05:30 committed by Mike Kaganski
parent a7d1fed245
commit 8d8f62852a
2 changed files with 38 additions and 28 deletions

View file

@ -1,19 +1,25 @@
On Error Resume Next
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\SecurityCenter2")
Set installedAntiviruses = objWMIService.ExecQuery("Select * from AntivirusProduct")
If objWMIService is Nothing Then
Wscript.StdOut.Write "NULL"
Else
Set installedAntiviruses = objWMIService.ExecQuery("Select * from AntivirusProduct")
'Iterates through all the antivirus software,retrieved by the WMI query,present on the system and prints only the ones that are active
'this is done by checking the 12th bit of the productState property of the antivirus
'if 12th bit is on then it means that the antivirus is in active state
'if 12th bit is off then it is inactive.
'see http://neophob.com/2010/03/wmi-query-windows-securitycenter2/
count=0
list=""
For Each antivirus in installedAntiviruses
If antivirus.productState And &h01000 Then 'checking the state of the 12th bit of productState property of the antivirus
count=count+1
list=list & VBNewLine & VBtab & "*" & antivirus.displayName
count=0
list=""
For Each antivirus in installedAntiviruses
If antivirus.productState And &h01000 Then 'checking the state of the 12th bit of productState property of the antivirus
count=count+1
list=list & VBNewLine & VBtab & "*" & antivirus.displayName
End if
Next
If count = 0 Then
Wscript.StdOut.Write "NOT_FOUND"
Else
Wscript.Echo list
End if
Next
If count = 0 Then
Wscript.StdOut.Write "NOT_FOUND"
Else Wscript.Echo list
End if
End if

View file

@ -12980,24 +12980,28 @@ dnl ===================================================================
if test $_os = WINNT ; then
AC_MSG_CHECKING([for active Antivirus software])
ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
AC_MSG_RESULT([found])
EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
echo $EICAR_STRING > $SRC_ROOT/eicar
EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
rm $SRC_ROOT/eicar
if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
AC_MSG_RESULT([found])
EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
echo $EICAR_STRING > $SRC_ROOT/eicar
EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
rm $SRC_ROOT/eicar
if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
fi
echo $EICAR_STRING > $BUILDDIR/eicar
EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
rm $BUILDDIR/eicar
if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
fi
add_warning "To speed up builds and avoid failures in unit tests, it is highly recommended that you exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST"
else
AC_MSG_RESULT([not found])
fi
echo $EICAR_STRING > $BUILDDIR/eicar
EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
rm $BUILDDIR/eicar
if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
fi
add_warning "To speed up builds and avoid failures in unit tests, it is highly recommended that you exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST"
else
AC_MSG_RESULT([not found])
AC_MSG_RESULT([n/a])
fi
fi