Bug on xml parsing for U64 types (appid, hop by hop, end to end)
authorEduardo Ramos Testillano <eduardo.ramos.testillano@gmail.com>
Fri, 11 Jul 2014 16:40:10 +0000 (18:40 +0200)
committerEduardo Ramos Testillano <eduardo.ramos.testillano@gmail.com>
Fri, 11 Jul 2014 16:40:10 +0000 (18:40 +0200)
source/core/internal/ModuleManager.cpp
source/diameter/codec/Message.cpp

index 787cf27..b2bd74e 100644 (file)
@@ -39,6 +39,8 @@
 #include <anna/core/internal/ModuleManager.hpp>
 #include <anna/config/defines.hpp>
 
+#include <stdlib.h>
+
 using namespace std;
 using namespace anna;
 
index e28ca64..6490b81 100644 (file)
@@ -709,6 +709,7 @@ void Message::fromXML(const anna::xml::Node* messageNode) throw(anna::RuntimeExc
   hbh = messageNode->getAttribute("hop-by-hop-id", false /* no exception */);
   ete = messageNode->getAttribute("end-by-end-id", false /* no exception */);
   int i_aux;
+  unsigned int u_aux;
 
   if(version) {
     i_aux = version->getIntegerValue();
@@ -808,41 +809,41 @@ void Message::fromXML(const anna::xml::Node* messageNode) throw(anna::RuntimeExc
   }
 
   // Application-id
-  i_aux = appid->getIntegerValue();
+  u_aux = appid->getIntegerValue();
 
-  if(i_aux < 0) {
+  if(u_aux < 0) {
     std::string msg = "Error processing command <application-id '"; msg += appid->getValue();
     msg += "': negative values are not allowed";
     throw anna::RuntimeException(msg, ANNA_FILE_LOCATION);
   }
 
-  setApplicationId(i_aux);
+  setApplicationId(u_aux);
 
   // Hob-by-hop-id
   if(hbh) {
-    i_aux = hbh->getIntegerValue();
+    u_aux = hbh->getIntegerValue();
 
-    if(i_aux < 0) {
+    if(u_aux < 0) {
       std::string msg = "Error processing command <hop-by-hop-id '"; msg += hbh->getValue();
       msg += "': negative values are not allowed";
       throw anna::RuntimeException(msg, ANNA_FILE_LOCATION);
     }
-  } else i_aux = 0;
+  } else u_aux = 0;
 
-  setHopByHop(i_aux);
+  setHopByHop(u_aux);
 
   // End-to-end-id
   if(ete) {
-    i_aux = ete->getIntegerValue();
+    u_aux = ete->getIntegerValue();
 
-    if(i_aux < 0) {
+    if(u_aux < 0) {
       std::string msg = "Error processing command <end-to-end-id '"; msg += ete->getValue();
       msg += "': negative values are not allowed";
       throw anna::RuntimeException(msg, ANNA_FILE_LOCATION);
     }
-  } else i_aux = 0;
+  } else u_aux = 0;
 
-  setEndToEnd(i_aux);
+  setEndToEnd(u_aux);
   // Childrens
   Avp *avp;