Alexander Wels has uploaded a new change for review. Change subject: engine,userportal,webadmin: Various code fixes ......................................................................
engine,userportal,webadmin: Various code fixes - Fixed various Coverity issues, including: - Several getBytes() missing encoding. - Some potential null pointer dereferences. Change-Id: I759bfd3176b25731a5150ae690a9838e0ab63ce8 Signed-off-by: Alexander Wels <aw...@redhat.com> --- M frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java M frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServlet.java M frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/communication/VdcOperationManagerTest.java M frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/server/gwt/AbstractGwtDynamicHostPageServletTest.java M frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServletTest.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.java M frontend/webadmin/modules/gwt-common/src/test/java/org/ovirt/engine/ui/common/GwtMessagesValidator.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/AlertListModel.java 8 files changed, 76 insertions(+), 50 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/05/34905/1 diff --git a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java index 3594f7c..c1eed4c 100644 --- a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java +++ b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java @@ -1,6 +1,7 @@ package org.ovirt.engine.ui.frontend.server.gwt; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Locale; @@ -79,6 +80,7 @@ private static final String HOST_JSP = "/GwtHostPage.jsp"; //$NON-NLS-1$ private static final String UTF_CONTENT_TYPE = "text/html; charset=UTF-8"; //$NON-NLS-1$ + protected static final String UTF8 = "UTF-8"; //$NON-NLS-1$ private BackendLocal backend; @@ -259,7 +261,8 @@ return obj; } - protected String getMd5Sum(HttpServletRequest request) throws NoSuchAlgorithmException { + protected String getMd5Sum(HttpServletRequest request) throws NoSuchAlgorithmException, + UnsupportedEncodingException { return (new HexBinaryAdapter()).marshal(getMd5Digest(request).digest()); } @@ -274,14 +277,15 @@ * string representation of the MD5 sum. * @throws NoSuchAlgorithmException If the method cannot create the digest * object. + * @throws UnsupportedEncodingException */ protected MessageDigest getMd5Digest(final HttpServletRequest request) - throws NoSuchAlgorithmException { + throws NoSuchAlgorithmException, UnsupportedEncodingException { MessageDigest digest = createMd5Digest(); for (MD5Attributes attribute: MD5Attributes.values()) { if (request.getAttribute(attribute.getKey()) != null) { digest.update(request.getAttribute(attribute.getKey()). - toString().getBytes()); + toString().getBytes(UTF8)); } } return digest; diff --git a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServlet.java b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServlet.java index 9259930..83f0373 100644 --- a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServlet.java +++ b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServlet.java @@ -1,6 +1,7 @@ package org.ovirt.engine.ui.frontend.server.gwt; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; @@ -63,17 +64,18 @@ } @Override - protected MessageDigest getMd5Digest(HttpServletRequest request) throws NoSuchAlgorithmException { + protected MessageDigest getMd5Digest(HttpServletRequest request) throws NoSuchAlgorithmException, + UnsupportedEncodingException { MessageDigest digest = super.getMd5Digest(request); // Update based on applicationMode object - digest.update(request.getAttribute(ATTR_APPLICATION_MODE).toString().getBytes()); + digest.update(request.getAttribute(ATTR_APPLICATION_MODE).toString().getBytes(UTF8)); // Update based on pluginDefinitions array - digest.update(request.getAttribute(ATTR_PLUGIN_DEFS).toString().getBytes()); + digest.update(request.getAttribute(ATTR_PLUGIN_DEFS).toString().getBytes(UTF8)); // Update based on engineSessionTimeout object - digest.update(request.getAttribute(ATTR_ENGINE_SESSION_TIMEOUT).toString().getBytes()); + digest.update(request.getAttribute(ATTR_ENGINE_SESSION_TIMEOUT).toString().getBytes(UTF8)); return digest; } diff --git a/frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/communication/VdcOperationManagerTest.java b/frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/communication/VdcOperationManagerTest.java index 6fa0b92..f1ed07a 100644 --- a/frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/communication/VdcOperationManagerTest.java +++ b/frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/communication/VdcOperationManagerTest.java @@ -35,7 +35,6 @@ @SuppressWarnings("unchecked") @Before public void setUp() throws Exception { - final VdcReturnValueBase result = new VdcReturnValueBase(); testManager = new VdcOperationManager(mockOperationProcessor); final VdcReturnValueBase loginResult = new VdcReturnValueBase(); LoginUserParameters params = new LoginUserParameters("test", "test", //$NON-NLS-1$ //$NON-NLS-2$ diff --git a/frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/server/gwt/AbstractGwtDynamicHostPageServletTest.java b/frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/server/gwt/AbstractGwtDynamicHostPageServletTest.java index 95f0e62..a9ddff4 100644 --- a/frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/server/gwt/AbstractGwtDynamicHostPageServletTest.java +++ b/frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/server/gwt/AbstractGwtDynamicHostPageServletTest.java @@ -17,6 +17,7 @@ import static org.mockito.Mockito.when; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; @@ -208,7 +209,7 @@ } @Test - public void testGetMd5Digest_WithoutUserInfoObject() throws NoSuchAlgorithmException { + public void testGetMd5Digest_WithoutUserInfoObject() throws NoSuchAlgorithmException, UnsupportedEncodingException { MessageDigest result = testServlet.getMd5Digest(mockRequest); assertEquals(result, mockDigest); verify(mockDigest, atLeast(1)).update(byteArrayCaptor.capture()); @@ -216,7 +217,7 @@ } @Test - public void testGetMd5Digest_WithUserInfoObject() throws NoSuchAlgorithmException { + public void testGetMd5Digest_WithUserInfoObject() throws NoSuchAlgorithmException, UnsupportedEncodingException { String userInfo = "{ \"foo\": \"bar\" }"; //$NON-NLS-1$ when(mockUserInfoObject.toString()).thenReturn(userInfo); when(mockRequest.getAttribute(GwtDynamicHostPageServlet. diff --git a/frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServletTest.java b/frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServletTest.java index 5227e14..84ba1a9 100644 --- a/frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServletTest.java +++ b/frontend/webadmin/modules/frontend/src/test/java/org/ovirt/engine/ui/frontend/server/gwt/WebAdminHostPageServletTest.java @@ -15,6 +15,7 @@ import static org.ovirt.engine.core.utils.MockConfigRule.mockConfig; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; @@ -101,13 +102,14 @@ } @Test - public void testGetMd5Digest_WithExtraObjects_WithoutUserInfoObject() throws NoSuchAlgorithmException { + public void testGetMd5Digest_WithExtraObjects_WithoutUserInfoObject() throws NoSuchAlgorithmException, + UnsupportedEncodingException { MessageDigest result = testServlet.getMd5Digest(mockRequest); assertEquals(result, mockDigest); verify(mockDigest, atLeast(3)).update(byteArrayCaptor.capture()); - assertArrayEquals(SELECTOR_SCRIPT.getBytes(), byteArrayCaptor.getAllValues().get(0)); - assertArrayEquals(APPLICATION_MODE.getBytes(), byteArrayCaptor.getAllValues().get(1)); - assertArrayEquals(mockPluginDefinitionsArray.toString().getBytes(), byteArrayCaptor.getAllValues().get(2)); + assertArrayEquals(SELECTOR_SCRIPT.getBytes(GwtDynamicHostPageServlet.UTF8), byteArrayCaptor.getAllValues().get(0)); + assertArrayEquals(APPLICATION_MODE.getBytes(GwtDynamicHostPageServlet.UTF8), byteArrayCaptor.getAllValues().get(1)); + assertArrayEquals(mockPluginDefinitionsArray.toString().getBytes(GwtDynamicHostPageServlet.UTF8), byteArrayCaptor.getAllValues().get(2)); } @Test diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.java index 6a1a7ca..0052c92 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCustomPreviewPopupWidget.java @@ -1,26 +1,10 @@ package org.ovirt.engine.ui.common.widget.uicommon.popup.vm; -import com.google.gwt.cell.client.Cell.Context; -import com.google.gwt.cell.client.FieldUpdater; -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.BrowserEvents; -import com.google.gwt.dom.client.NativeEvent; -import com.google.gwt.editor.client.SimpleBeanEditorDriver; -import com.google.gwt.resources.client.ImageResource; -import com.google.gwt.safehtml.shared.SafeHtml; -import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import com.google.gwt.safehtml.shared.SafeHtmlUtils; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.cellview.client.Column; -import com.google.gwt.user.client.ui.AbstractImagePrototype; -import com.google.gwt.user.client.ui.FlowPanel; -import com.google.gwt.user.client.ui.HTML; -import com.google.gwt.user.client.ui.Label; -import com.google.gwt.user.client.ui.SimplePanel; -import com.google.gwt.user.client.ui.SplitLayoutPanel; -import com.google.gwt.view.client.CellPreviewEvent; -import com.google.gwt.view.client.NoSelectionModel; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; + import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.ImageStatus; import org.ovirt.engine.core.common.businessentities.Snapshot; @@ -46,10 +30,27 @@ import org.ovirt.engine.ui.uicompat.EventArgs; import org.ovirt.engine.ui.uicompat.IEventListener; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import com.google.gwt.cell.client.Cell.Context; +import com.google.gwt.cell.client.FieldUpdater; +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.BrowserEvents; +import com.google.gwt.dom.client.NativeEvent; +import com.google.gwt.editor.client.SimpleBeanEditorDriver; +import com.google.gwt.resources.client.ImageResource; +import com.google.gwt.safehtml.shared.SafeHtml; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.google.gwt.safehtml.shared.SafeHtmlUtils; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.cellview.client.Column; +import com.google.gwt.user.client.ui.AbstractImagePrototype; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.SimplePanel; +import com.google.gwt.user.client.ui.SplitLayoutPanel; +import com.google.gwt.view.client.CellPreviewEvent; +import com.google.gwt.view.client.NoSelectionModel; public class VmSnapshotCustomPreviewPopupWidget extends AbstractModelBoundPopupWidget<PreviewSnapshotModel> { @@ -175,6 +176,7 @@ constants.vmConfiguration()), "30px"); //$NON-NLS-1$ previewTable.addColumn(new CheckboxColumn<SnapshotModel>(new FieldUpdater<SnapshotModel, Boolean>() { + @Override public void update(int index, SnapshotModel snapshotModel, Boolean value) { previewSnapshotModel.getSnapshotModel().getMemory().setEntity(value); refreshTable(previewTable); @@ -183,7 +185,7 @@ }) { @Override public Boolean getValue(SnapshotModel snapshotModel) { - return (Boolean) snapshotModel.getMemory().getEntity(); + return snapshotModel.getMemory().getEntity(); } @@ -284,7 +286,12 @@ private void updateWarnings() { List<DiskImage> selectedDisks = previewSnapshotModel.getSelectedDisks(); List<DiskImage> disksOfSelectedSnapshot = previewSnapshotModel.getSnapshotModel().getEntity().getDiskImages(); - List<DiskImage> disksOfActiveSnapshot = previewSnapshotModel.getActiveSnapshotModel().getEntity().getDiskImages(); + List<DiskImage> disksOfActiveSnapshot; + if (previewSnapshotModel.getActiveSnapshotModel() != null) { + disksOfActiveSnapshot = previewSnapshotModel.getActiveSnapshotModel().getEntity().getDiskImages(); + } else { + disksOfActiveSnapshot = Collections.emptyList(); + } boolean isIncludeAllDisksOfSnapshot = selectedDisks.containsAll(disksOfSelectedSnapshot); boolean isIncludeMemory = previewSnapshotModel.getSnapshotModel().getMemory().getEntity(); diff --git a/frontend/webadmin/modules/gwt-common/src/test/java/org/ovirt/engine/ui/common/GwtMessagesValidator.java b/frontend/webadmin/modules/gwt-common/src/test/java/org/ovirt/engine/ui/common/GwtMessagesValidator.java index f24ee79..09da793 100644 --- a/frontend/webadmin/modules/gwt-common/src/test/java/org/ovirt/engine/ui/common/GwtMessagesValidator.java +++ b/frontend/webadmin/modules/gwt-common/src/test/java/org/ovirt/engine/ui/common/GwtMessagesValidator.java @@ -1,9 +1,11 @@ package org.ovirt.engine.ui.common; import java.io.File; -import java.io.FileReader; +import java.io.FileInputStream; import java.io.FilenameFilter; import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.net.URISyntaxException; @@ -46,13 +48,16 @@ .toURI().toASCIIString().replaceAll("file:", "")); List<Method> messagesMethods = Arrays.asList(classUnderTest.getMethods()); - for (File localeFile : getMessagesPropertiesFiles(messagesDir, classUnderTest.getSimpleName())) { - PropertiesFileInfo.properties = loadProperties(localeFile); - PropertiesFileInfo.fileName = localeFile.getName(); + File[] propertiesFiles = getMessagesPropertiesFiles(messagesDir, classUnderTest.getSimpleName()); + if (propertiesFiles != null) { + for (File localeFile : propertiesFiles) { + PropertiesFileInfo.properties = loadProperties(localeFile); + PropertiesFileInfo.fileName = localeFile.getName(); - for (Method method : messagesMethods) { - checkForMissingDefault(method, errors); - checkPlaceHolders(method, errors); + for (Method method : messagesMethods) { + checkForMissingDefault(method, errors); + checkPlaceHolders(method, errors); + } } } } else { @@ -137,11 +142,16 @@ private static Properties loadProperties(File localeFile) throws IOException { Properties properties = new Properties(); - FileReader fr = null; + Reader fr = null; + FileInputStream fis = null; try { - fr = new FileReader(localeFile); + fis = new FileInputStream(localeFile); + fr = new InputStreamReader(fis, "UTF-8"); properties.load(fr); } finally { + if (fis != null) { + fis.close(); + } if (fr != null) { fr.close(); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/AlertListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/AlertListModel.java index e22e1a8..59bdf97 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/AlertListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/AlertListModel.java @@ -50,6 +50,7 @@ @Override public void executeCommand(UICommand command) { + super.executeCommand(command); if (command == getDismissCommand()) { dismissAlert(); -- To view, visit http://gerrit.ovirt.org/34905 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I759bfd3176b25731a5150ae690a9838e0ab63ce8 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alexander Wels <aw...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches