osaf/services/saf/ntfsv/ntfs/NtfAdmin.cc | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
In NtfAdmin::checkNotificationList(), when deleteConfirmedNotification() deletes
the last item, the NotificationMap is reduced, posNot++ will be out of range of
NotificationMap since posNot is invalid.
Patch uses posNot is main iterator, and deleteNot as temporary iterator points
to
deleted notification
diff --git a/osaf/services/saf/ntfsv/ntfs/NtfAdmin.cc
b/osaf/services/saf/ntfsv/ntfs/NtfAdmin.cc
--- a/osaf/services/saf/ntfsv/ntfs/NtfAdmin.cc
+++ b/osaf/services/saf/ntfsv/ntfs/NtfAdmin.cc
@@ -646,9 +646,10 @@ void NtfAdmin::checkNotificationList() {
TRACE_ENTER();
NotificationMap::iterator posNot;
for (posNot = notificationMap.begin();
- posNot != notificationMap.end();
- posNot++) {
+ posNot != notificationMap.end();) {
NtfSmartPtr notification = posNot->second;
+ NotificationMap::iterator deleteNot = posNot++;
+
if (notification->loggedOk() == false) {
/* When reader API works check if already logged */
logger.log(notification, true);
@@ -668,7 +669,7 @@ void NtfAdmin::checkNotificationList() {
TRACE_2("Client: %u not exist", uSubId.clientId);
}
}
- deleteConfirmedNotification(notification, posNot);
+ deleteConfirmedNotification(notification, deleteNot);
}
}
TRACE_LEAVE();
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel