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<bool>(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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel