Hi Mathi,
I also tried to applied my patch that sent to you but I can not.
I don't know why.
Please try my patch in attachment again.
About freeing logBuf:
Because string that pointed by logBug will be used later in
write_log_record(logHandle, logStreamHandle, selectionObject,
&logRecord), we can not free it immediately.
Instead we should free logRecord.logBuffer->logBuf.
But, because not freeing this pointer do not cause serious memory leak,
I think we can ignore it.
I've try to run valgrind and the the result just say that this is "still
reachable".
Base on this discussion I think we can ignore freeing that pointer:
http://stackoverflow.com/questions/3840582/still-reachable-leak-detected-by-valgrind
valgrind --show-reachable=yes --leak-check=full --track-origins=yes
/usr/local/bin/saflogger abc
==750== Thread 1:
==750== 32 bytes in 1 blocks are still reachable in loss record 1 of 2
==750== at 0x4C2C494: calloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==750== by 0x589768F: _dlerror_run (dlerror.c:141)
==750== by 0x58970C0: dlopen@@GLIBC_2.2.5 (dlopen.c:87)
==750== by 0x5066FB4: ncs_leap_startup (ncs_main_pub.c:254)
==750== by 0x5067306: ncs_core_agents_startup (ncs_main_pub.c:337)
==750== by 0x5067448: ncs_agents_startup (ncs_main_pub.c:180)
==750== by 0x52C9564: lga_startup (lga_util.c:282)
==750== by 0x52C799D: saLogInitialize (lga_api.c:131)
==750== by 0x401495: main (saf_logger.c:368)
==750==
==750== 67 bytes in 1 blocks are still reachable in loss record 2 of 2
==750== at 0x4C2A2DB: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==750== by 0x4016A6: main (saf_logger.c:333)
==750==
==750== LEAK SUMMARY:
==750== definitely lost: 0 bytes in 0 blocks
==750== indirectly lost: 0 bytes in 0 blocks
==750== possibly lost: 0 bytes in 0 blocks
==750== still reachable: 99 bytes in 2 blocks
==750== suppressed: 0 bytes in 0 blocks
Best regards,
Giang Do
On 01/09/2015 12:34, Mathivanan Naickan Palanivelu wrote:
Hi Giang,
Iam unable to apply the patch on the latest staging.
However, the changes look straight forward.
Should we also free logBuf?
Thanks,
Mathi.
-----Original Message-----
From: giang [mailto:[email protected]]
Sent: Tuesday, August 25, 2015 11:24 AM
To: Mathivanan Naickan Palanivelu; [email protected];
[email protected]
Cc: [email protected]
Subject: [PATCH 1 of 1] log: saflogger does not check invalid options [#1367]
osaf/tools/saflog/saflogger/saf_logger.c | 49
++++++++++++++++++++++---------
1 files changed, 35 insertions(+), 14 deletions(-)
If there are invalid non-options, show them, recommend use --help and then
exit.
diff --git a/osaf/tools/saflog/saflogger/saf_logger.c
b/osaf/tools/saflog/saflogger/saf_logger.c
--- a/osaf/tools/saflog/saflogger/saf_logger.c
+++ b/osaf/tools/saflog/saflogger/saf_logger.c
@@ -311,14 +311,48 @@ int main(int argc, char *argv[])
logRecord.logHeader.genericHdr.logSeverity =
get_severity(optarg);
break;
case 'h':
+ usage();
+ exit(EXIT_SUCCESS);
+ break;
case '?':
default:
- usage();
+ fprintf(stderr, "Try saflogger -h for more
information.\n");
exit(EXIT_FAILURE);
break;
}
}
+ if (optind >= argc) {
+ /* No body of log record */
+ }
+ else if (optind == argc - 1) {
+ /* Create body of log record */
+ int sz;
+ char *logBuf = NULL;
+ sz = strlen(argv[optind]);
+ logBuf = malloc(sz + 64); /* add space for index/id in
periodic writes */
+ strcpy(logBuf, argv[optind]);
+ logBuffer.logBufSize = sz;
+ logBuffer.logBuf = (SaUint8T *)logBuf;
+ logRecord.logBuffer = &logBuffer;
+ }
+ else {
+ fprintf(stderr, "Invalid argument.\n");
+ fprintf(stderr, "Enclose message in quotation marks \"\" e.g.
\"");
+ while (optind < argc)
+ {
+ fprintf(stderr, "%s", argv[optind++]);
+ if (optind < argc)
+ fprintf(stderr, " ");
+ else
+ fprintf(stderr, "\"\n");
+ }
+ fprintf(stderr, "Try saflogger -h for more information.\n");
+ exit(EXIT_FAILURE);
+ }
+
+ logStreamName.length = strlen((char *)logStreamName.value);
+
if (logRecord.logHdrType == SA_LOG_NTF_HEADER) {
/* Setup some valid values */
logRecord.logHeader.ntfHdr.notificationId =
SA_NTF_IDENTIFIER_UNUSED; @@ -329,19 +363,6 @@ int main(int argc, char
*argv[])
logRecord.logHeader.ntfHdr.eventTime =
get_current_SaTime();
}
- logStreamName.length = strlen((char *)logStreamName.value);
-
- /* Create body of log record (if any) */
- if (optind < argc) {
- int sz;
- char *logBuf = NULL;
- sz = strlen(argv[optind]);
- logBuf = malloc(sz + 64); /* add space for index/id in
periodic writes */
- strcpy(logBuf, argv[optind]);
- logBuffer.logBufSize = sz;
- logBuffer.logBuf = (SaUint8T *)logBuf;
- logRecord.logBuffer = &logBuffer;
- }
wait_time = 0;
error = saLogInitialize(&logHandle, &logCallbacks, &logVersion);
# HG changeset patch
# User Giang
# Date 1435817678 -25200
# Thu Jul 02 13:14:38 2015 +0700
# Node ID e1959a22051b6bc08bb58fc1b6cae4cc5541a58b
# Parent 72b291175b84475a654a1669e682f01a5b39626f
log: saflogger does not check invalid options [#1367]
If there are invalid non-options, show them, recommend use --help and then exit.
diff --git a/osaf/tools/saflog/saflogger/saf_logger.c b/osaf/tools/saflog/saflogger/saf_logger.c
--- a/osaf/tools/saflog/saflogger/saf_logger.c
+++ b/osaf/tools/saflog/saflogger/saf_logger.c
@@ -311,14 +311,48 @@ int main(int argc, char *argv[])
logRecord.logHeader.genericHdr.logSeverity = get_severity(optarg);
break;
case 'h':
+ usage();
+ exit(EXIT_SUCCESS);
+ break;
case '?':
default:
- usage();
+ fprintf(stderr, "Try saflogger -h for more information.\n");
exit(EXIT_FAILURE);
break;
}
}
+ if (optind >= argc) {
+ /* No body of log record */
+ }
+ else if (optind == argc - 1) {
+ /* Create body of log record */
+ int sz;
+ char *logBuf = NULL;
+ sz = strlen(argv[optind]);
+ logBuf = malloc(sz + 64); /* add space for index/id in periodic writes */
+ strcpy(logBuf, argv[optind]);
+ logBuffer.logBufSize = sz;
+ logBuffer.logBuf = (SaUint8T *)logBuf;
+ logRecord.logBuffer = &logBuffer;
+ }
+ else {
+ fprintf(stderr, "Invalid argument.\n");
+ fprintf(stderr, "Enclose message in quotation marks \"\" e.g. \"");
+ while (optind < argc)
+ {
+ fprintf(stderr, "%s", argv[optind++]);
+ if (optind < argc)
+ fprintf(stderr, " ");
+ else
+ fprintf(stderr, "\"\n");
+ }
+ fprintf(stderr, "Try saflogger -h for more information.\n");
+ exit(EXIT_FAILURE);
+ }
+
+ logStreamName.length = strlen((char *)logStreamName.value);
+
if (logRecord.logHdrType == SA_LOG_NTF_HEADER) {
/* Setup some valid values */
logRecord.logHeader.ntfHdr.notificationId = SA_NTF_IDENTIFIER_UNUSED;
@@ -329,19 +363,6 @@ int main(int argc, char *argv[])
logRecord.logHeader.ntfHdr.eventTime = get_current_SaTime();
}
- logStreamName.length = strlen((char *)logStreamName.value);
-
- /* Create body of log record (if any) */
- if (optind < argc) {
- int sz;
- char *logBuf = NULL;
- sz = strlen(argv[optind]);
- logBuf = malloc(sz + 64); /* add space for index/id in periodic writes */
- strcpy(logBuf, argv[optind]);
- logBuffer.logBufSize = sz;
- logBuffer.logBuf = (SaUint8T *)logBuf;
- logRecord.logBuffer = &logBuffer;
- }
wait_time = 0;
error = saLogInitialize(&logHandle, &logCallbacks, &logVersion);
------------------------------------------------------------------------------
Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
Get real-time metrics from all of your servers, apps and tools
in one place.
SourceForge users - Click here to start your Free Trial of Datadog now!
http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel