osaf/libs/agents/saf/ntfa/Makefile.am |   1 +
 osaf/libs/agents/saf/ntfa/ntfa_api.c  |  25 ++++++++++++++++---------
 osaf/libs/saf/libSaNtf/Makefile.am    |   1 +
 3 files changed, 18 insertions(+), 9 deletions(-)


diff --git a/osaf/libs/agents/saf/ntfa/Makefile.am 
b/osaf/libs/agents/saf/ntfa/Makefile.am
--- a/osaf/libs/agents/saf/ntfa/Makefile.am
+++ b/osaf/libs/agents/saf/ntfa/Makefile.am
@@ -25,6 +25,7 @@ noinst_HEADERS = \
 noinst_LTLIBRARIES = libntfa.la
 
 libntfa_la_CPPFLAGS = \
+       -DSA_EXTENDED_NAME_SOURCE \
        $(AM_CPPFLAGS) \
        -I$(top_srcdir)/osaf/libs/common/ntfsv/include
 
diff --git a/osaf/libs/agents/saf/ntfa/ntfa_api.c 
b/osaf/libs/agents/saf/ntfa/ntfa_api.c
--- a/osaf/libs/agents/saf/ntfa/ntfa_api.c
+++ b/osaf/libs/agents/saf/ntfa/ntfa_api.c
@@ -18,7 +18,8 @@
 #include <string.h>
 #include "ntfa.h"
 #include "ntfsv_mem.h"
-
+#include "osaf_extended_name.h"
+#include "saAis.h"
 #define NCS_SAF_MIN_ACCEPT_TIME 10
 #define NTFS_WAIT_TIME 1000
 
@@ -304,9 +305,10 @@ static SaAisErrorT checkSecurityAlarmFil
 static SaAisErrorT checkHeader(SaNtfNotificationHeaderT *nh)
 {
        int i =0;
-
-       if (nh->notificationObject->length > SA_MAX_NAME_LENGTH || 
nh->notifyingObject->length > SA_MAX_NAME_LENGTH) {
-               TRACE_1("SaNameT length too big");
+       
+       if (!ntfsv_sanamet_is_valid(nh->notificationObject) ||
+               !ntfsv_sanamet_is_valid(nh->notifyingObject)) {
+               TRACE_1("SaNameT is invaild");
                return SA_AIS_ERR_INVALID_PARAM;
        }
 
@@ -517,12 +519,17 @@ static SaAisErrorT fillSendStruct(SaNtfN
        /* nodificationId set to zero means that this is a new notification */
        /* and not an sync message send from the server. */
        *(notificationHeader->notificationId) = 0;
+       
+       /* For long dn object, clone the string pointer */
+       ntfsv_sanamet_clone_strptr(notificationHeader->notificationObject);
 
-       if (notificationHeader->notifyingObject->length == 0) {
-               notificationHeader->notifyingObject->length = 
notificationHeader->notificationObject->length;
-               (void)memcpy(notificationHeader->notifyingObject->value, 
notificationHeader->notificationObject->value,
-                            notificationHeader->notifyingObject->length);
-       }
+       /* Copy notificationObject to notifyingObject if it's empty */
+       if (osaf_is_extended_name_empty(notificationHeader->notifyingObject))
+               rc = ntfsv_sanamet_copy(notificationHeader->notifyingObject, 
+                                                       
notificationHeader->notificationObject);
+       else    /* Not empty and it's long dn object, clone the string pointer 
*/
+               ntfsv_sanamet_clone_strptr(notificationHeader->notifyingObject);
+
        return rc;
 }
 
diff --git a/osaf/libs/saf/libSaNtf/Makefile.am 
b/osaf/libs/saf/libSaNtf/Makefile.am
--- a/osaf/libs/saf/libSaNtf/Makefile.am
+++ b/osaf/libs/saf/libSaNtf/Makefile.am
@@ -29,6 +29,7 @@ lib_LTLIBRARIES = libSaNtf.la
 libSaNtf_la_SOURCES = 
 
 libSaNtf_la_CPPFLAGS = \
+       -DSA_EXTENDED_NAME_SOURCE \
        $(AM_CPPFLAGS)
 
 if HAVE_LD_VERSION_SCRIPT

------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to