[devel] [PATCH 1/1] amfd: Fix the data types of attributes inconsistency in get_config() [#3128]

2019-12-16 Thread phuc.h.chau
In Amfd, for Configuration::get_config(), object osafAmfDelayNodeFailoverTimeout
and osafAmfDelayNodeFailoverNodeWaitTimeout are time_t, but the method uses
uint32_t to hold the values of those attributes it leads to the stack memory 
corrupted
---
 src/amf/amfd/config.cc | 17 +
 1 file changed, 9 insertions(+), 8 deletions(-)
 mode change 100644 => 100755 src/amf/amfd/config.cc

diff --git a/src/amf/amfd/config.cc b/src/amf/amfd/config.cc
old mode 100644
new mode 100755
index af72840..375f050
--- a/src/amf/amfd/config.cc
+++ b/src/amf/amfd/config.cc
@@ -43,20 +43,20 @@ static void ccb_apply_modify_hdlr(struct 
CcbUtilOperationData *opdata) {
   configuration->restrict_auto_repair(enabled);
 } else if (!strcmp(attr_mod->modAttr.attrName,
 "osafAmfDelayNodeFailoverTimeout")) {
-  uint32_t delay = 0;  // default to 0 if attribute is blank
+  time_t delay = 0;  // default to 0 if attribute is blank
   if (attr_mod->modType != SA_IMM_ATTR_VALUES_DELETE &&
   attr_mod->modAttr.attrValues != nullptr) {
-delay = (*((SaUint32T *)attr_mod->modAttr.attrValues[0]));
+delay = (*((time_t *)attr_mod->modAttr.attrValues[0]));
   }
   avd_cb->node_failover_delay = delay;
   TRACE("osafAmfDelayNodeFailoverTimeout changed to '%llu'",
  avd_cb->node_failover_delay);
 } else if (!strcmp(attr_mod->modAttr.attrName,
 "osafAmfDelayNodeFailoverNodeWaitTimeout")) {
-  uint32_t delay = kDefaultNodeWaitTime;
+  time_t delay = kDefaultNodeWaitTime;
   if (attr_mod->modType != SA_IMM_ATTR_VALUES_DELETE &&
   attr_mod->modAttr.attrValues != nullptr) {
-delay = (*((SaUint32T *)attr_mod->modAttr.attrValues[0]));
+delay = (*((time_t *)attr_mod->modAttr.attrValues[0]));
   }
   avd_cb->node_failover_node_wait = delay;
   TRACE("osafAmfDelayNodeFailoverNodeWaitTimeout changed to '%llu'",
@@ -166,18 +166,19 @@ SaAisErrorT Configuration::get_config(void) {
  (SaImmAttrValuesT_2 ***)&attributes) ==
  SA_AIS_OK) {
 uint32_t value;
+time_t time_value;
 TRACE("reading configuration '%s'", osaf_extended_name_borrow(&dn));
 if (immutil_getAttr("osafAmfRestrictAutoRepairEnable", attributes, 0,
 &value) == SA_AIS_OK) {
   configuration->restrict_auto_repair(static_cast(value));
 }
 if (immutil_getAttr("osafAmfDelayNodeFailoverTimeout", attributes, 0,
-&value) == SA_AIS_OK) {
-  avd_cb->node_failover_delay = value;
+&time_value) == SA_AIS_OK) {
+  avd_cb->node_failover_delay = time_value;
 }
 if (immutil_getAttr("osafAmfDelayNodeFailoverNodeWaitTimeout", attributes, 
0,
-&value) == SA_AIS_OK) {
-  avd_cb->node_failover_node_wait = value;
+&time_value) == SA_AIS_OK) {
+  avd_cb->node_failover_node_wait = time_value;
 }
   }
 
-- 
2.7.4



___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 1/1] amfd: Fix the data types of attributes inconsistency in get_config() [#3128]

2019-12-16 Thread Gary Lee
Hi

Ack ( review )

thanks
Gary

—

From: phuc.h.chau 
Sent: Monday, December 16, 2019 6:59:38 PM
To: Vu Minh Nguyen 
Cc: opensaf-devel@lists.sourceforge.net 
Subject: [devel] [PATCH 1/1] amfd: Fix the data types of attributes 
inconsistency in get_config() [#3128]

In Amfd, for Configuration::get_config(), object osafAmfDelayNodeFailoverTimeout
and osafAmfDelayNodeFailoverNodeWaitTimeout are time_t, but the method uses
uint32_t to hold the values of those attributes it leads to the stack memory 
corrupted
---
 src/amf/amfd/config.cc | 17 +
 1 file changed, 9 insertions(+), 8 deletions(-)
 mode change 100644 => 100755 src/amf/amfd/config.cc

diff --git a/src/amf/amfd/config.cc b/src/amf/amfd/config.cc
old mode 100644
new mode 100755
index af72840..375f050
--- a/src/amf/amfd/config.cc
+++ b/src/amf/amfd/config.cc
@@ -43,20 +43,20 @@ static void ccb_apply_modify_hdlr(struct 
CcbUtilOperationData *opdata) {
   configuration->restrict_auto_repair(enabled);
 } else if (!strcmp(attr_mod->modAttr.attrName,
 "osafAmfDelayNodeFailoverTimeout")) {
-  uint32_t delay = 0;  // default to 0 if attribute is blank
+  time_t delay = 0;  // default to 0 if attribute is blank
   if (attr_mod->modType != SA_IMM_ATTR_VALUES_DELETE &&
   attr_mod->modAttr.attrValues != nullptr) {
-delay = (*((SaUint32T *)attr_mod->modAttr.attrValues[0]));
+delay = (*((time_t *)attr_mod->modAttr.attrValues[0]));
   }
   avd_cb->node_failover_delay = delay;
   TRACE("osafAmfDelayNodeFailoverTimeout changed to '%llu'",
  avd_cb->node_failover_delay);
 } else if (!strcmp(attr_mod->modAttr.attrName,
 "osafAmfDelayNodeFailoverNodeWaitTimeout")) {
-  uint32_t delay = kDefaultNodeWaitTime;
+  time_t delay = kDefaultNodeWaitTime;
   if (attr_mod->modType != SA_IMM_ATTR_VALUES_DELETE &&
   attr_mod->modAttr.attrValues != nullptr) {
-delay = (*((SaUint32T *)attr_mod->modAttr.attrValues[0]));
+delay = (*((time_t *)attr_mod->modAttr.attrValues[0]));
   }
   avd_cb->node_failover_node_wait = delay;
   TRACE("osafAmfDelayNodeFailoverNodeWaitTimeout changed to '%llu'",
@@ -166,18 +166,19 @@ SaAisErrorT Configuration::get_config(void) {
  (SaImmAttrValuesT_2 ***)&attributes) ==
  SA_AIS_OK) {
 uint32_t value;
+time_t time_value;
 TRACE("reading configuration '%s'", osaf_extended_name_borrow(&dn));
 if (immutil_getAttr("osafAmfRestrictAutoRepairEnable", attributes, 0,
 &value) == SA_AIS_OK) {
   configuration->restrict_auto_repair(static_cast(value));
 }
 if (immutil_getAttr("osafAmfDelayNodeFailoverTimeout", attributes, 0,
-&value) == SA_AIS_OK) {
-  avd_cb->node_failover_delay = value;
+&time_value) == SA_AIS_OK) {
+  avd_cb->node_failover_delay = time_value;
 }
 if (immutil_getAttr("osafAmfDelayNodeFailoverNodeWaitTimeout", attributes, 
0,
-&value) == SA_AIS_OK) {
-  avd_cb->node_failover_node_wait = value;
+&time_value) == SA_AIS_OK) {
+  avd_cb->node_failover_node_wait = time_value;
 }
   }

--
2.7.4



___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 1/1] amfd: Fix the data types of attributes inconsistency in get_config() [#3128]

2019-12-16 Thread Nguyen Minh Vu

Hi Phuc,

Ack.

Thanks, Vu

On 12/16/19 2:59 PM, phuc.h.chau wrote:

In Amfd, for Configuration::get_config(), object osafAmfDelayNodeFailoverTimeout
and osafAmfDelayNodeFailoverNodeWaitTimeout are time_t, but the method uses
uint32_t to hold the values of those attributes it leads to the stack memory 
corrupted
---
  src/amf/amfd/config.cc | 17 +
  1 file changed, 9 insertions(+), 8 deletions(-)
  mode change 100644 => 100755 src/amf/amfd/config.cc

diff --git a/src/amf/amfd/config.cc b/src/amf/amfd/config.cc
old mode 100644
new mode 100755
index af72840..375f050
--- a/src/amf/amfd/config.cc
+++ b/src/amf/amfd/config.cc
@@ -43,20 +43,20 @@ static void ccb_apply_modify_hdlr(struct 
CcbUtilOperationData *opdata) {
configuration->restrict_auto_repair(enabled);
  } else if (!strcmp(attr_mod->modAttr.attrName,
  "osafAmfDelayNodeFailoverTimeout")) {
-  uint32_t delay = 0;  // default to 0 if attribute is blank
+  time_t delay = 0;  // default to 0 if attribute is blank
if (attr_mod->modType != SA_IMM_ATTR_VALUES_DELETE &&
attr_mod->modAttr.attrValues != nullptr) {
-delay = (*((SaUint32T *)attr_mod->modAttr.attrValues[0]));
+delay = (*((time_t *)attr_mod->modAttr.attrValues[0]));
}
avd_cb->node_failover_delay = delay;
TRACE("osafAmfDelayNodeFailoverTimeout changed to '%llu'",
   avd_cb->node_failover_delay);
  } else if (!strcmp(attr_mod->modAttr.attrName,
  "osafAmfDelayNodeFailoverNodeWaitTimeout")) {
-  uint32_t delay = kDefaultNodeWaitTime;
+  time_t delay = kDefaultNodeWaitTime;
if (attr_mod->modType != SA_IMM_ATTR_VALUES_DELETE &&
attr_mod->modAttr.attrValues != nullptr) {
-delay = (*((SaUint32T *)attr_mod->modAttr.attrValues[0]));
+delay = (*((time_t *)attr_mod->modAttr.attrValues[0]));
}
avd_cb->node_failover_node_wait = delay;
TRACE("osafAmfDelayNodeFailoverNodeWaitTimeout changed to '%llu'",
@@ -166,18 +166,19 @@ SaAisErrorT Configuration::get_config(void) {
   (SaImmAttrValuesT_2 ***)&attributes) ==
   SA_AIS_OK) {
  uint32_t value;
+time_t time_value;
  TRACE("reading configuration '%s'", osaf_extended_name_borrow(&dn));
  if (immutil_getAttr("osafAmfRestrictAutoRepairEnable", attributes, 0,
  &value) == SA_AIS_OK) {
configuration->restrict_auto_repair(static_cast(value));
  }
  if (immutil_getAttr("osafAmfDelayNodeFailoverTimeout", attributes, 0,
-&value) == SA_AIS_OK) {
-  avd_cb->node_failover_delay = value;
+&time_value) == SA_AIS_OK) {
+  avd_cb->node_failover_delay = time_value;
  }
  if (immutil_getAttr("osafAmfDelayNodeFailoverNodeWaitTimeout", 
attributes, 0,
-&value) == SA_AIS_OK) {
-  avd_cb->node_failover_node_wait = value;
+&time_value) == SA_AIS_OK) {
+  avd_cb->node_failover_node_wait = time_value;
  }
}
  




___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel