osaf/tools/safntf/include/ntfclient.h         |   3 +-
 osaf/tools/safntf/ntfread/Makefile.am         |   6 +-
 osaf/tools/safntf/ntfread/ntfread.c           |  23 +++++-----
 osaf/tools/safntf/ntfsend/Makefile.am         |   6 +-
 osaf/tools/safntf/ntfsend/ntfsend.c           |  29 ++++++-------
 osaf/tools/safntf/ntfsubscribe/Makefile.am    |   6 +-
 osaf/tools/safntf/ntfsubscribe/ntfsubscribe.c |   4 +
 osaf/tools/safntf/src/Makefile.am             |   1 +
 osaf/tools/safntf/src/ntfclient.c             |  58 +++++++++++++-------------
 9 files changed, 72 insertions(+), 64 deletions(-)


(1) Not allow objects specified in command having string greater than 
kMaxDnLength

diff --git a/osaf/tools/safntf/include/ntfclient.h 
b/osaf/tools/safntf/include/ntfclient.h
--- a/osaf/tools/safntf/include/ntfclient.h
+++ b/osaf/tools/safntf/include/ntfclient.h
@@ -23,7 +23,8 @@
 
 #include <saNtf.h>
 #include "ntfsv_msg.h"
-
+#include "ntfsv_mem.h"
+#include "osaf_extended_name.h"
 /* Defines */
 #define DEFAULT_FLAG 0x0001
 /* #define MAX_NUMBER_OF_STATE_CHANGES 5 */
diff --git a/osaf/tools/safntf/ntfread/Makefile.am 
b/osaf/tools/safntf/ntfread/Makefile.am
--- a/osaf/tools/safntf/ntfread/Makefile.am
+++ b/osaf/tools/safntf/ntfread/Makefile.am
@@ -23,6 +23,7 @@ bin_PROGRAMS = ntfread
 
 ntfread_CPPFLAGS = \
        $(AM_CPPFLAGS) \
+       -DSA_EXTENDED_NAME_SOURCE \
        -I$(top_srcdir)/osaf/tools/safntf/include \
        -I$(top_srcdir)/osaf/libs/common/ntfsv/include
 
@@ -30,6 +31,7 @@ ntfread_SOURCES = \
        ntfread.c
 
 ntfread_LDADD = \
+       $(top_builddir)/osaf/tools/safntf/src/libntfclient.la \
+       $(top_builddir)/osaf/libs/common/ntfsv/libntfsv_common.la \
        $(top_builddir)/osaf/libs/core/libopensaf_core.la \
-       $(top_builddir)/osaf/libs/saf/libSaNtf/libSaNtf.la \
-       $(top_builddir)/osaf/tools/safntf/src/libntfclient.la
+       $(top_builddir)/osaf/libs/saf/libSaNtf/libSaNtf.la
diff --git a/osaf/tools/safntf/ntfread/ntfread.c 
b/osaf/tools/safntf/ntfread/ntfread.c
--- a/osaf/tools/safntf/ntfread/ntfread.c
+++ b/osaf/tools/safntf/ntfread/ntfread.c
@@ -67,8 +67,8 @@ static SaUint16T nNyObj = 0;
 static SaUint16T nCId = 0;
 
 static SaNtfEventTypeT eType = 0;
-static SaNameT nObj = {0};
-static SaNameT nyObj = {0};
+static SaNameT nObj;
+static SaNameT nyObj;
 static SaNtfClassIdT cId;
 
 /* common alarm and security alarm */
@@ -272,6 +272,10 @@ int main(int argc, char *argv[]) {
        verbose = 0;
        progname = argv[0];
 
+       if (setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1) != 0) {
+               LOG_ER("Failed to enable Extended SaNameT");
+               exit(EXIT_FAILURE);
+       }
        /* Check options */
        while (1) {
                c = getopt_long(argc, argv, "b:c:d:hE:e:i:klN:n:op:s:v",
@@ -314,22 +318,19 @@ int main(int argc, char *argv[]) {
                        filterAlarm = false;
                        break;
                case 'N':
-                       nyObj.length = (SaUint16T)strlen(optarg);
-                       if (SA_MAX_NAME_LENGTH < nyObj.length) {
+                       if (strlen(optarg) > kMaxDnLength) {
                                fprintf(stderr, "notifyingObject too long\n");
                                exit(EXIT_FAILURE);
-                       }
-                       (void)memcpy(nyObj.value, optarg, nyObj.length);
+                       }               
+                       saAisNameLend(optarg, &nyObj);
                        nNyObj = 1;
                        break;
                case 'n':
-                       nObj.length = (SaUint16T)strlen(optarg);
-                       if (SA_MAX_NAME_LENGTH < nObj.length) {
-                               fprintf(stderr,
-                                       "notificationObject too long\n");
+                       if (strlen(optarg) > kMaxDnLength) {
+                               fprintf(stderr, "notificationObject too 
long\n");
                                exit(EXIT_FAILURE);
                        }
-                       (void)memcpy(nObj.value, optarg, nObj.length);
+                       saAisNameLend(optarg, &nObj);
                        nNnObj = 1;
                        break;
                case 'o':
diff --git a/osaf/tools/safntf/ntfsend/Makefile.am 
b/osaf/tools/safntf/ntfsend/Makefile.am
--- a/osaf/tools/safntf/ntfsend/Makefile.am
+++ b/osaf/tools/safntf/ntfsend/Makefile.am
@@ -23,6 +23,7 @@ bin_PROGRAMS = ntfsend
 
 ntfsend_CPPFLAGS = \
        $(AM_CPPFLAGS) \
+       -DSA_EXTENDED_NAME_SOURCE \
        -I$(top_srcdir)/osaf/tools/safntf/include \
        -I$(top_srcdir)/osaf/libs/common/ntfsv/include
 
@@ -30,6 +31,7 @@ ntfsend_SOURCES = \
        ntfsend.c
 
 ntfsend_LDADD = \
+       $(top_builddir)/osaf/tools/safntf/src/libntfclient.la \
+       $(top_builddir)/osaf/libs/common/ntfsv/libntfsv_common.la \
        $(top_builddir)/osaf/libs/core/libopensaf_core.la \
-       $(top_builddir)/osaf/libs/saf/libSaNtf/libSaNtf.la \
-       $(top_builddir)/osaf/tools/safntf/src/libntfclient.la
+       $(top_builddir)/osaf/libs/saf/libSaNtf/libSaNtf.la
diff --git a/osaf/tools/safntf/ntfsend/ntfsend.c 
b/osaf/tools/safntf/ntfsend/ntfsend.c
--- a/osaf/tools/safntf/ntfsend/ntfsend.c
+++ b/osaf/tools/safntf/ntfsend/ntfsend.c
@@ -186,12 +186,8 @@ static void fillInDefaultValues(saNotifi
 
        (void)strncpy(notificationParams->additionalText,
                      DEFAULT_ADDITIONAL_TEXT, 
notificationAllocationParams->lengthAdditionalText);
-       notificationParams->notificationObject.length = 
strlen(DEFAULT_NOTIFICATION_OBJECT);
-       (void)memcpy(notificationParams->notificationObject.value,
-                    DEFAULT_NOTIFICATION_OBJECT, 
notificationParams->notificationObject.length);
-       notificationParams->notifyingObject.length = 
strlen(DEFAULT_NOTIFYING_OBJECT);
-       (void)memcpy(notificationParams->notifyingObject.value,
-                    DEFAULT_NOTIFYING_OBJECT, 
notificationParams->notifyingObject.length);
+       saAisNameLend(DEFAULT_NOTIFICATION_OBJECT, 
&notificationParams->notificationObject);
+       saAisNameLend(DEFAULT_NOTIFYING_OBJECT, 
&notificationParams->notifyingObject);
        notificationParams->notificationClassId.vendorId = ERICSSON_VENDOR_ID;
        notificationParams->notificationClassId.majorId = 0;
        notificationParams->notificationClassId.minorId = 0;
@@ -802,6 +798,11 @@ int main(int argc, char *argv[])
                {0, 0, 0, 0}
        };
 
+       if (setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1) != 0) {
+               LOG_ER("Failed to enable Extended SaNameT");
+               exit(EXIT_FAILURE);
+       }
+       
        fillInDefaultValues(&myNotificationAllocationParams,
                            &myNotificationFilterAllocationParams, 
&myNotificationParams);
 
@@ -831,22 +832,18 @@ int main(int argc, char *argv[])
                                
getVendorId(&myNotificationParams.notificationClassId);
                                break;
                        case 'n':
-                               myNotificationParams.notificationObject.length 
= (SaUint16T)strlen(optarg);
-                               if (SA_MAX_NAME_LENGTH < 
myNotificationParams.notificationObject.length) {
+                               if (strlen(optarg) > kMaxDnLength) {
                                        fprintf(stderr, "notificationObject too 
long\n");
                                        exit(EXIT_FAILURE);
-                               }
-                               
(void)memcpy(myNotificationParams.notificationObject.value,
-                                            optarg, 
myNotificationParams.notificationObject.length);
+                               }                       
+                               saAisNameLend(optarg, 
&myNotificationParams.notificationObject);
                                break;
                        case 'N':
-                               myNotificationParams.notifyingObject.length = 
(SaUint16T)strlen(optarg);
-                               if (SA_MAX_NAME_LENGTH < 
myNotificationParams.notifyingObject.length) {
+                               if (strlen(optarg) > kMaxDnLength) {
                                        fprintf(stderr, "notifyingObject too 
long\n");
                                        exit(EXIT_FAILURE);
-                               }
-                               
(void)memcpy(myNotificationParams.notifyingObject.value,
-                                            optarg, 
myNotificationParams.notifyingObject.length);
+                               }                               
+                               saAisNameLend(optarg, 
&myNotificationParams.notifyingObject);
                                break;
                        case 'e':
                                myNotificationParams.eventType = 
(SaNtfEventTypeT)atoi(optarg);
diff --git a/osaf/tools/safntf/ntfsubscribe/Makefile.am 
b/osaf/tools/safntf/ntfsubscribe/Makefile.am
--- a/osaf/tools/safntf/ntfsubscribe/Makefile.am
+++ b/osaf/tools/safntf/ntfsubscribe/Makefile.am
@@ -23,6 +23,7 @@ bin_PROGRAMS = ntfsubscribe
 
 ntfsubscribe_CPPFLAGS = \
        $(AM_CPPFLAGS) \
+       -DSA_EXTENDED_NAME_SOURCE \
        -I$(top_srcdir)/osaf/tools/safntf/include \
        -I$(top_srcdir)/osaf/libs/common/ntfsv/include
 
@@ -31,6 +32,7 @@ ntfsubscribe_SOURCES = \
 
 
 ntfsubscribe_LDADD = \
+       $(top_builddir)/osaf/tools/safntf/src/libntfclient.la \
+       $(top_builddir)/osaf/libs/common/ntfsv/libntfsv_common.la \
        $(top_builddir)/osaf/libs/core/libopensaf_core.la \
-       $(top_builddir)/osaf/libs/saf/libSaNtf/libSaNtf.la \
-       $(top_builddir)/osaf/tools/safntf/src/libntfclient.la
+       $(top_builddir)/osaf/libs/saf/libSaNtf/libSaNtf.la
diff --git a/osaf/tools/safntf/ntfsubscribe/ntfsubscribe.c 
b/osaf/tools/safntf/ntfsubscribe/ntfsubscribe.c
--- a/osaf/tools/safntf/ntfsubscribe/ntfsubscribe.c
+++ b/osaf/tools/safntf/ntfsubscribe/ntfsubscribe.c
@@ -283,6 +283,10 @@ int main(int argc, char *argv[])
        verbose = 0;
        progname = argv[0];
 
+       if (setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1) != 0) {
+               LOG_ER("Failed to enable Extended SaNameT");
+               exit(EXIT_FAILURE);
+       }       
        /* Check options */
        while (1) {
                c = getopt_long(argc, argv, "acosyht:v", long_options, NULL);
diff --git a/osaf/tools/safntf/src/Makefile.am 
b/osaf/tools/safntf/src/Makefile.am
--- a/osaf/tools/safntf/src/Makefile.am
+++ b/osaf/tools/safntf/src/Makefile.am
@@ -22,6 +22,7 @@ noinst_LTLIBRARIES = libntfclient.la
 
 libntfclient_la_CPPFLAGS = \
        $(AM_CPPFLAGS) \
+       -DSA_EXTENDED_NAME_SOURCE \
        -I$(top_srcdir)/osaf/libs/saf/include \
        -I$(top_srcdir)/osaf/tools/safntf/include \
        -I$(top_srcdir)/osaf/libs/common/ntfsv/include
diff --git a/osaf/tools/safntf/src/ntfclient.c 
b/osaf/tools/safntf/src/ntfclient.c
--- a/osaf/tools/safntf/src/ntfclient.c
+++ b/osaf/tools/safntf/src/ntfclient.c
@@ -509,7 +509,7 @@ static void print_attribute_value(SaNtfN
        const SaUint16T max_size = 20;
        SaAisErrorT rc;
        SaUint8T *bin_ptr;
-       char tmp_str[SA_MAX_NAME_LENGTH+1];
+       char* tmp_str;
        int i;
 
        switch ((int)attributeType) {
@@ -538,12 +538,11 @@ static void print_attribute_value(SaNtfN
                                        (void **)&str_ptr,
                                        &data_size);
                if (rc == SA_AIS_OK) {
-                       if (data_size > (SA_MAX_NAME_LENGTH+1)) {
-                               data_size = SA_MAX_NAME_LENGTH;
-                       }
-                       snprintf(tmp_str,data_size+1,"%s",str_ptr);
-                       printf(" Attribute Value: \"%s\"\n",
-                                       tmp_str);
+                       tmp_str = (char*) malloc(data_size + 1);
+                       memcpy(tmp_str, str_ptr, data_size);
+                       tmp_str[data_size] = '\0';
+                       printf(" Attribute Value: \"%s\"\n", tmp_str);
+                       free(tmp_str);
                } else
                        fprintf(stderr, "saNtfPtrValGet Error "
                                "%d\n", rc);
@@ -635,8 +634,7 @@ static void print_header(const SaNtfNoti
                  SaNtfSubscriptionIdT subscriptionId,
                  SaNtfNotificationTypeT notificationType)
 {
-       char tmpObj[SA_MAX_NAME_LENGTH + 1];
-
+       char *temp_str;
        if (verbose) {
                printf("notificationID = %d\n",
                       (int)*(notificationHeader->notificationId));
@@ -648,25 +646,20 @@ static void print_header(const SaNtfNoti
        print_event_type(*notificationHeader->eventType, notificationType);
 
        if (verbose)
-               printf("notificationObject.length = %u\n",
-                      notificationHeader->notificationObject->length);
+               printf("notificationObject.length = %zu\n",
+                               
ntfs_sanamet_length(notificationHeader->notificationObject));
+       
+       temp_str = ntfs_sanamet_strdup(notificationHeader->notificationObject);
+       printf("notificationObject = \"%s\"\n", temp_str);
+       free(temp_str);
+       
+       if (verbose)
+               printf("notifyingObject.length = %zu\n",
+                               
ntfs_sanamet_length(notificationHeader->notifyingObject));
 
-       strncpy(tmpObj,
-               (char *)notificationHeader->notificationObject->value,
-               notificationHeader->notificationObject->length);
-       tmpObj[notificationHeader->notificationObject->length] = '\0';
-       printf("notificationObject = \"%s\"\n", tmpObj);
-
-       strncpy(tmpObj,
-               (char *)notificationHeader->notifyingObject->value,
-               notificationHeader->notifyingObject->length);
-       tmpObj[notificationHeader->notifyingObject->length] = '\0';
-
-       if (verbose)
-               printf("notifyingObject.length = %u\n",
-                      notificationHeader->notifyingObject->length);
-
-       printf("notifyingObject = \"%s\"\n", tmpObj);
+       temp_str = ntfs_sanamet_strdup(notificationHeader->notifyingObject);
+       printf("notifyingObject = \"%s\"\n", temp_str);
+       free(temp_str);
 
        /* Notification Class ID in compact dot notation */
        if (notificationHeader->notificationClassId->vendorId ==
@@ -697,7 +690,8 @@ void print_additional_info(SaNtfNotifica
                           const SaNtfNotificationHeaderT * notificationHeader)
 {
        int i;
-       SaNameT *dataPtr;
+       char *dataPtr;
+       SaNameT name;
        SaStringT info_value_str;
        SaUint16T dataSize;
        SaAisErrorT rc;
@@ -716,8 +710,12 @@ void print_additional_info(SaNtfNotifica
                                                        (void **)&dataPtr,
                                                        &dataSize);
                                if (rc == SA_AIS_OK) {
-                                       printf(" infoValue = \"%s\"\n",
-                                                  dataPtr->value);
+                                       char *newStr = (char*)malloc(dataSize + 
1);
+                                       memcpy(newStr, dataPtr + 2, dataSize - 
2);
+                                       newStr[dataSize] = '\0';
+                                       saAisNameLend(newStr, &name);
+                                       printf(" infoValue = \"%s\"\n", 
saAisNameBorrow(&name));
+                                       free(newStr);
                                } else
                                        fprintf(stderr, "saNtfPtrValGet Error "
                                                "%d\n", rc);

------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck
Code Sight - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to