apphandler: fix Set System Info command

Return proper error response for reserved data bytes

as per the ipmi specification,Set System Info parameters
takes block of string data and the first byte indicates the
encoding of the string. the bits[7:4] are reserved.

string data byte 1:
[7:4] - reserved
[3:0] - encoding
0h = ASCII+Latin1
1h = UTF-8
2h = UNICODE
all other = reserved.

This patch verifies if the reserveds bits
are being used and return proper error response

tested
//Before Fix:
1)Paramter 1
 ipmitool raw 0x06 0x58 0x01 0x00 0x03 0x0e 0x56 0x65 0x72 0x73 0x69 0x6f 0x6e 0x32 0x2e 0x31 0x32 0x33 0x34 0x35

2)Parameter 2
ipmitool raw 0x06 0x58 0x02 0x00 0x03 0x0e 0x56 0x65 0x72 0x73 0x69 0x6f 0x6e 0x32 0x2e 0x31 0x32 0x33 0x34 0x35

3)Parameter 3:
ipmitool raw 0x06 0x58 0x01 0x00 0x03 0x0e 0x56 0x65 0x72 0x73 0x69 0x6f 0x6e 0x32 0x2e 0x31 0x32 0x33 0x34 0x35

//After Fix:
1)Parameter 1
ipmitool  raw 0x06 0x58 0x01 0x00 0x03 0x0e 0x56 0x65 0x72 0x73 0x69 0x6f 0x6e 0x32 0x2e 0x31 0x32 0x33 0x34  0x35
Unable to send RAW command (channel=0x0 netfn=0x6 lun=0x0 cmd=0x58 rsp=0xcc): Invalid data field in request

2)Parameter 2
ipmitool raw 0x06 0x58 0x02 0x00 0x03 0x0e 0x56 0x65 0x72 0x73 0x69 0x6f 0x6e 0x32 0x2e 0x31 0x32 0x33 0x34 0x35
Unable to send RAW command (channel=0x0 netfn=0x6 lun=0x0 cmd=0x58 rsp=0xcc): Invalid data field in request

3)Parameter 3:
ipmitool raw 0x06 0x58 0x01 0x00 0x03 0x0e 0x56 0x65 0x72 0x73 0x69 0x6f 0x6e 0x32 0x2e 0x31 0x32 0x33 0x34 0x35
Unable to send RAW command (channel=0x0 netfn=0x6 lun=0x0 cmd=0x58 rsp=0xcc): Invalid data field in request

Change-Id: I8ac2c582bfc9029dc01008bbd665603562a9f275
Signed-off-by: krishnar4 <krishnar@ami.com>
1 file changed
tree: 01226b30bcb53b97b95268e6794122dd660017fb
  1. app/
  2. dbus-sdr/
  3. docs/
  4. include/
  5. libipmid/
  6. scripts/
  7. softoff/
  8. subprojects/
  9. test/
  10. user_channel/
  11. xyz/
  12. .build.sh
  13. .clang-format
  14. .gitignore
  15. .shellcheck
  16. .travis.yml
  17. apphandler.cpp
  18. apphandler.hpp
  19. chassishandler.cpp
  20. chassishandler.hpp
  21. dcmihandler.cpp
  22. dcmihandler.hpp
  23. error-HostEvent.hpp
  24. fruread.hpp
  25. generate_whitelist.sh
  26. generate_whitelist_create.sh
  27. globalhandler.cpp
  28. globalhandler.hpp
  29. groupext.cpp
  30. host-cmd-manager.cpp
  31. host-cmd-manager.hpp
  32. host-interface.cpp
  33. host-interface.hpp
  34. host-ipmid-whitelist.conf
  35. ipmi_fru_info_area.cpp
  36. ipmi_fru_info_area.hpp
  37. ipmiallowlist.hpp
  38. ipmid-new.cpp
  39. ipmisensor.cpp
  40. LICENSE
  41. meson.build
  42. meson.options
  43. OWNERS
  44. read_fru_data.cpp
  45. read_fru_data.hpp
  46. README.md
  47. selutility.cpp
  48. selutility.hpp
  49. sensordatahandler.cpp
  50. sensordatahandler.hpp
  51. sensorhandler.cpp
  52. sensorhandler.hpp
  53. settings.cpp
  54. settings.hpp
  55. storageaddsel.cpp
  56. storageaddsel.hpp
  57. storagehandler.cpp
  58. storagehandler.hpp
  59. sys_info_param.cpp
  60. sys_info_param.hpp
  61. systemintfcmds.cpp
  62. systemintfcmds.hpp
  63. testaddsel.cpp
  64. testit.cpp
  65. transportconstants.hpp
  66. transporthandler.cpp
  67. transporthandler.hpp
  68. whitelist-filter.cpp
README.md

Compile ipmid with default options:

meson builddir
ninja -C builddir

Compile ipmid with yocto defaults:

meson builddir -Dbuildtype=minsize -Db_lto=true -Dtests=disabled
ninja -C builddir

If any of the dependencies are not found on the host system during configuration, meson automatically gets them via its wrap dependencies mentioned in ipmid/subprojects.

Enable/Disable meson wrap feature

meson builddir -Dwrap_mode=nofallback
ninja -C builddir

Enable debug traces

meson builddir -Dbuildtype=debug
ninja -C builddir

Generate test coverage report:

meson builddir -Db_coverage=true -Dtests=enabled
ninja -C builddir test
ninja -C builddir coverage