[VOL-4631] openonuAdapterGo - hardening: check ONU OMCI get responses for consistency

Change-Id: I6402b16408fd29db8d95f1607ff1af21da5907de
diff --git a/internal/pkg/swupg/omci_onu_upgrade.go b/internal/pkg/swupg/omci_onu_upgrade.go
index 369890a..006c62c 100755
--- a/internal/pkg/swupg/omci_onu_upgrade.go
+++ b/internal/pkg/swupg/omci_onu_upgrade.go
@@ -1625,15 +1625,28 @@
 			log.Fields{"device-id": oFsm.deviceID})
 		return
 	}
-
 	meAttributes := msgObj.Attributes
-	imageIsCommitted := meAttributes[me.SoftwareImage_IsCommitted].(uint8)
-	imageIsActive := meAttributes[me.SoftwareImage_IsActive].(uint8)
-	imageVersion := cmn.TrimStringFromMeOctet(meAttributes[me.SoftwareImage_Version])
-	logger.Debugw(ctx, "OnuUpgradeFsm - GetResponse Data for SoftwareImage",
-		log.Fields{"device-id": oFsm.deviceID, "entityID": msgObj.EntityInstance,
-			"version": imageVersion, "isActive": imageIsActive, "isCommitted": imageIsCommitted})
+	var imageVersion string
+	var imageIsCommitted, imageIsActive uint8
 
+	if softwareImageIsCommitted, ok := meAttributes[me.SoftwareImage_IsCommitted]; ok {
+		if softwareImageIsActiveimage, ok := meAttributes[me.SoftwareImage_IsActive]; ok {
+			if softwareImageVersion, ok := meAttributes[me.SoftwareImage_Version]; ok {
+				imageIsCommitted = softwareImageIsCommitted.(uint8)
+				imageIsActive = softwareImageIsActiveimage.(uint8)
+				imageVersion = cmn.TrimStringFromMeOctet(softwareImageVersion)
+				logger.Debugw(ctx, "OnuUpgradeFsm - GetResponse Data for SoftwareImage",
+					log.Fields{"device-id": oFsm.deviceID, "entityID": msgObj.EntityInstance,
+						"version": imageVersion, "isActive": imageIsActive, "isCommitted": imageIsCommitted})
+			} else {
+				logger.Errorw(ctx,
+					"OnuUpgradeFsm - Not all mandatory attributes present in in SoftwareImage instance - handling stopped!",
+					log.Fields{"device-id": oFsm.deviceID})
+				oFsm.abortOnOmciError(ctx, false)
+				return
+			}
+		}
+	}
 	if oFsm.PAdaptFsm.PFsm.Current() == UpgradeStCheckImageName {
 		//image name check after EndSwDownload, this state (and block) can only be taken if APIVersion43 is used
 		oFsm.verifyOnuSwStatusAfterDownload(ctx, msgObj.EntityInstance, imageVersion, imageIsActive, imageIsCommitted)