Return error when SDR offset is out of range

When reading SDRs, if the requested offset is beyond the end of the SDR,
we should return an error indicating that the offset is out of range.

Tested:
Confirmed that reading offset 0x40 or 0x41 of a 64-byte SDR return an
error:
ipmitool raw 0xa 0x23 0x01 0x00 0x87 0x00 0x40 0x1
Unable to send RAW command (channel=0x0 netfn=0xa lun=0x0 cmd=0x23
rsp=0xc9): Parameter out of range
ipmitool raw 0xa 0x23 0x01 0x00 0x87 0x00 0x41 0x1
Unable to send RAW command (channel=0x0 netfn=0xa lun=0x0 cmd=0x23
rsp=0xc9): Parameter out of range

Ported from intel-ipmi-oem Change-Id: I3423dddadeb3d2a5e2075ae079d263503ac0679e

Change-Id: Ibb64572a56be06cfad0710fdadafb4791a64513c
Signed-off-by: Jason M. Bills <jason.m.bills@intel.com>
Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
diff --git a/dbus-sdr/sensorcommands.cpp b/dbus-sdr/sensorcommands.cpp
index e48cd91..39e61f0 100644
--- a/dbus-sdr/sensorcommands.cpp
+++ b/dbus-sdr/sensorcommands.cpp
@@ -2452,6 +2452,12 @@
 
     size_t sdrLength = sizeof(get_sdr::SensorDataRecordHeader) +
                        hdr->record_length;
+    if (offset >= sdrLength)
+    {
+        phosphor::logging::log<phosphor::logging::level::ERR>(
+            "ipmiStorageGetSDR: offset is outside the record");
+        return ipmi::responseParmOutOfRange();
+    }
     if (sdrLength < (offset + bytesToRead))
     {
         bytesToRead = sdrLength - offset;