[NFC] Fix for casting signed value to unsigned int 41/170841/2
authorSzymon Jastrzebski <s.jastrzebsk@partner.samsung.com>
Thu, 22 Feb 2018 11:55:36 +0000 (12:55 +0100)
committerSzymon Jastrzebski <s.jastrzebsk@partner.samsung.com>
Fri, 23 Feb 2018 12:47:51 +0000 (12:47 +0000)
SVACE ID #310366

[Verification] TW2 NFC M&A TCT pass rate 100%.

Change-Id: Id329ba99d1ae62c6380c672dc3a06d2cd581011b
Signed-off-by: Szymon Jastrzebski <s.jastrzebsk@partner.samsung.com>
src/nfc/nfc_message_utils.cc

index 4581c5e60d0b99cc53b6c777470c73a97e32343f..9c7749bd7fda683f0edafaefdd57d74dde2b87a7 100644 (file)
@@ -315,8 +315,11 @@ static PlatformResult NdefRecordGetHandle(picojson::value& record,
     return LogAndCreateResult(ErrorCode::TYPE_MISMATCH_ERR, "Record is empty");
   }
   const picojson::object& record_obj = record.get<picojson::object>();
-  short tnf_from_json = static_cast<short>(record.get("tnf").get<double>());
-  nfc_record_tnf_e tnf = static_cast<nfc_record_tnf_e>(tnf_from_json);
+  int tnf_from_json = static_cast<int>(record.get("tnf").get<double>());
+  if ((tnf_from_json < TNF_MIN) || (tnf_from_json > TNF_MAX)) {
+    return LogAndCreateResult(ErrorCode::TYPE_MISMATCH_ERR, "Type mismatch", ("Not supported TNF"));
+  }
+  nfc_record_tnf_e tnf = static_cast<nfc_record_tnf_e>(static_cast<unsigned int>(tnf_from_json));
   const picojson::array& type_data = FromJson<picojson::array>(record_obj, "type");
   auto type_size = type_data.size();
   std::unique_ptr<unsigned char[]> type(new unsigned char[type_size]);
@@ -335,9 +338,6 @@ static PlatformResult NdefRecordGetHandle(picojson::value& record,
   for (size_t i = 0; i < payload_size; i++) {
     payload[i] = static_cast<unsigned char>(payload_data[i].get<double>());
   }
-  if ((tnf_from_json < TNF_MIN) || (tnf_from_json > TNF_MAX)) {
-    return LogAndCreateResult(ErrorCode::TYPE_MISMATCH_ERR, "Type mismatch", ("Not supported TNF"));
-  }
   const int BYTE_ARRAY_MAX = 255;
   nfc_ndef_record_h ndef_record_handle = NULL;
   int result = nfc_ndef_record_create(